% \iffalse meta-comment
%
% Copyright (C) 2013-2018, Haixing Hu.
% Department of Computer Science and Technology, Nanjing University.
%
% This file may be distributed and/or modified under the conditions of the
% LaTeX Project Public License, either version 1.2 of this license or (at your
% option) any later version. The latest version of this license is in:
%
% http://www.latex-project.org/lppl.txt
%
% and version 1.2 or later is part of all distributions of LaTeX version
% 1999/12/01 or later.
%
% Home Page of the Project: http://haixing-hu.github.io/nju-thesis/
%
% \fi
%
% \iffalse
%<*driver>
\ProvidesFile{njuthesis.dtx}
%</driver>
%<cls>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
%<cls>\ProvidesClass{njuthesis.cls}
%<cfg>\ProvidesFile{njuthesis.cfg}
%<*cls>
 [2018/08/07 v1.2.2 Document Class for the Degree Papers of Nanjing University]
%</cls>
%<*driver>
\documentclass[10pt,a4paper,oneside]{ltxdoc}
\usepackage{dtx-style}
\EnableCrossrefs
\CodelineIndex
\GetFileInfo{njuthesis.dtx}
\begin{document}
  \DocInput{njuthesis.dtx}
\end{document}
%</driver>
% \fi
%
% \CheckSum{0}
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
% \DoNotIndex{\begin,\end,\begingroup,\endgroup}
% \DoNotIndex{\ifx,\ifdim,\ifnum,\ifcase,\else,\or,\fi}
% \DoNotIndex{\let,\def,\xdef,\newcommand,\renewcommand}
% \DoNotIndex{\expandafter,\csname,\endcsname,\relax,\protect}
% \DoNotIndex{\Huge,\huge,\LARGE,\Large,\large,\normalsize}
% \DoNotIndex{\small,\footnotesize,\scriptsize,\tiny}
% \DoNotIndex{\normalfont,\bfseries,\slshape,\interlinepenalty}
% \DoNotIndex{\hfil,\par,\vskip,\vspace,\quad}
% \DoNotIndex{\centering,\raggedright}
% \DoNotIndex{\c@secnumdepth,\@startsection,\@setfontsize}
% \DoNotIndex{\@plus,\@minus,\p@,\z@,\@m,\@M,\@ne,\m@ne,\@@par,\@dottedtocline}
% \DoNotIndex{\ ,\,,\.,\\}
% \DoNotIndex{\|}
% \DoNotIndex{\@dottedtocline}
% \DoNotIndex{\@afterindenttrue,\@arabic,\@biblabel,\@clubpenalty}
% \DoNotIndex{\@empty,\@highpenalty,\@ifnextchar,\@latex@warning,\@listI,\@listi}
% \DoNotIndex{\@mainmatterfalse,\@mainmattertrue,\@mkboth,\@nobreakfalse}
% \DoNotIndex{\@nobreaktrue,\@noitemerr,\@openbib@code,\@pnumwidth,\@restonecolfalse}
% \DoNotIndex{\@restonecoltrue,\@starttoc,\@tempcnta,\@tempdima,\@tocrmarg}
% \DoNotIndex{\@afterindenttrue,\@arabic,\@biblabel,\@clubpenalty,\@dottedtocline}
% \DoNotIndex{\@empty,\@highpenalty,\@ifnextchar,\@latex@warning,\@listI,\@listi}
% \DoNotIndex{\@mainmatterfalse,\@mainmattertrue,\@mkboth,\@nobreakfalse,\@nobreaktrue}
% \DoNotIndex{\@noitemerr,\@openbib@code,\@pnumwidth,\@restonecolfalse}
% \DoNotIndex{\@restonecoltrue,\@starttoc,\@tempcnta,\@tempdima,\@tocrmarg}
% \DoNotIndex{\abovedisplayshortskip,\abovedisplayskip,\addpenalty,\addvspace}
% \DoNotIndex{\advance,\alph,\arabic,\arraybackslash,\arraystretch,\AtBeginDocument}
% \DoNotIndex{\belowdisplayshortskip,\belowdisplayskip,\bf,\blacksquare,\bottomfraction}
% \DoNotIndex{\bullet,\c@enumiv,\c@page,\c@tocdepth,\captionsetup,\cdot,\CJKfamily}
% \DoNotIndex{\CJKglue,\CJKnumber,\CJKunderline,\CJKunderlinecolor,\ClassError}
% \DoNotIndex{\clearpage,\CurrentOption,\dagger,\day,\ddagger}
% \DoNotIndex{\DeclareGraphicsExtensions,\DeclareMathSizes,\DeclareOption}
% \DoNotIndex{\DeclareRobustCommand,\defaultfontfeatures,\DefineFNsymbolsTM}
% \DoNotIndex{\Diamondblack,\endlist,\ensuremath,\efill,\equal,\everypar}
% \DoNotIndex{\fontsize,\global,\hb@xt@,\hbox,\hfill,\hline,\hskip,\hspace,\hss}
% \DoNotIndex{\if@mainmatter,\if@restonecol,\if@twocolumn,\if@twoside,\ifodd}
% \DoNotIndex{\ifthenelse,\ignorespaces,\includegraphics,\input,\it,\item}
% \DoNotIndex{\itemsep,\kern,\l@chapter,\l@part,\labelsep,\labelwidth,\leaders}
% \DoNotIndex{\leavevmode,\leftmargin,\leftmargini,\leftmark,\leftskip,\list}
% \DoNotIndex{\LoadClass,\m@th,\makebox,\MakeUppercase,\markboth,\markright}
% \DoNotIndex{\mathparagraph,\mathsection,\mkern,\month,\multicolumn}
% \DoNotIndex{\newcolumntype,\newenvironment,\newif,\newline,\newlist,\newpage}
% \DoNotIndex{\newtheorem,\nobreak,\normalcolor,\null,\number,\onecolumn,\p@enumiv}
% \DoNotIndex{\pagestyle,\parbox,\parfillskip,\parindent,\parsep,\PassOptionsToClass}
% \DoNotIndex{\pdfbookmark,\penalty,\ProcessOptions,\punctstyle,\raisebox,\renewenvironment}
% \DoNotIndex{\RequirePackage,\RequireXeTeX,\restylefloat,\rightmargin,\rightmark,\rightskip}
% \DoNotIndex{\roman,\rule,\selectfont,,\setcounter,\setfnsymbol}
% \DoNotIndex{\setlength,\setlist,\settowidth,\sfcode,\sloppy,\square,\stretch,\tabcolsep}
% \DoNotIndex{\textasteriskcentered,\textbardbl,\textbf,\textdagger,\textdaggerdbl}
% \DoNotIndex{\textfraction,\textnormal,\textparagraph,\textsection,\textwidth}
% \DoNotIndex{\theenumiv,\theoremseparator,\theoremstyle,\theoremsymbol,\thispagestyle}
% \DoNotIndex{\titleformat,\titlespacing,\topsep,\twocolumn,\ULthickness}
% \DoNotIndex{\usecounter,\widowpenalty,\year,\color,\clubpenalty,\chaptermark}
% \DoNotIndex{\chaptertitlename,\geometry,\l@chapter,\l@part}
%
% \MakeShortVerb{\|}
% \newcommand*{\njuthesis}{\texttt{NJU-Thesis}}
% \newcommand*{\texlive}{{\TeX}\ Live\ 2017}
% \renewcommand*{\fileversion}{1.2.2}
% \renewcommand*{\filedate}{\today}
%
% \pagestyle{empty}
% \title{\njuthesis：南京大学学位论文\\
%        {\XeLaTeX}模板}
% \author{{胡海星}\\
%         {\texttt{starfish.hu@gmail.com}}\\
%         {南京大学计算机科学与技术系}}
% \date{\fileversion\ (\filedate)}
% \maketitle
% \thispagestyle{empty}
%
% \begin{abstract}
%
% \noindent\hspace{2em}文档类{\njuthesis}提供了一个南京大学学位论文的{\XeLaTeX}
% 模板。该文档类严格按照南京大学对学位论文的格式要求排版学位论文，底层通过
% |xeCJK|宏包支持中文。
%
% 目前{\njuthesis}可用于排版学士学位、硕士学位论文和博士学位论文。对于学士学位论文，
% 采用和硕士学位论文一样的格式进行排版。
%
% 虽然{\njuthesis}主要用于排版南京大学的学位论文，但亦可经过简单的设置或修改用于排版
% 国内其他大学的学位论文。
%
% 本文档是{\njuthesis}的说明文档，其中包含模板文件的设置说明以及其源代码的完全注释。
% \end{abstract}
% \clearpage
% \newpage
% \section*{{\hfill}修订历史{\hfill}}
% \begin{center}
% \noindent
% \begin{longtable}[C]{C{1.1cm}
%                      C{1.8cm}
%                      C{1.5cm}
%                      p{\textwidth-6.2cm}}
% \toprule
%   \textbf{版本}
%   & \textbf{日期}
%   & \textbf{修订者}
%   & \textbf{修订内容} \\
% \midrule
%  v1.0.0 & 2013/08/24 & 胡海星 & 完成第一个可工作版本 \\
%  v1.0.1 & 2013/08/25 & 胡海星 & 增加了一些PDF文档的元信息\\
%  v1.0.2 & 2013/08/25 & 胡海星 & 合并了国家图书馆封面上的导师信息\newline
%                                使用\cs{makebox}\oarg{width}\oarg{s}\marg{text}
%                                使得封面标签可以自动两端对其分布\newline
%                                修改了学位论文和用户手册的样式\\
%  v1.0.3 & 2013/08/25 & 胡海星 & 增加了《学位论文出版授权书》页面\\
%  v1.0.4 & 2013/08/25 & 胡海星 & 按照南京大学《博士 (硕士) 学位论文编写格式
%                                规定 (试行)》的要求修改了学位论文的一些排版格式\newline
%                                修复了页眉页脚的问题\\
%  v1.0.5 & 2013/08/25 & 胡海星 & 按照dtx的写作规范修改了手册的排版\newline
%                                增加了|preface|环境\newline
%                                删除了脚注样式的设置\newline
%                                删除了|algorithm|环境的定义，因为很多情况下
%                                其他算法和代码排版宏包都会定义该环境\\
%  v1.0.6 & 2013/08/25 & 胡海星 & 修复了生成学士学位论文的bug\newline
%                                增加了对国家标准的参考\newline
%                                增加了\std{GB/T 7156-2003}标准所定义的文献
%                                密级\newline
%                                将论文密级设置命令\cs{confidential}更名为
%                                \cs{securitylevel}\newline
%                                修改了国家图书馆封面和英文封面的样式\newline
%                                将生成国家图书馆封面的命令独立了出来\\
%  v1.0.7 & 2013/08/26 & 胡海星 & 修改了国家图书馆封面和论文出版授权书的一些细节\newline
%                                完善了|njuthesis|手册\\
%  v1.0.8 & 2013/08/28 & 胡海星 & 修复了拼写错误和文件重命名导致的bug\\
%  v1.1.0 & 2013/08/31 & 胡海星 & 重写了符合\std{GB/T 7714-2005}规范
%                                的{\BibTeX}样式文件\\
%  v1.1.1 & 2013/09/01 & 胡海星 & 增加了警告图标\newline
%                                修改了参考文献引用的样式\newline
%                                去除了\cs{paragraph}及以下级别章节的编号\newline
%                                修改了章节编号的样式\newline
%                                修改了一些本手册的排版细节\\
%  v1.1.2 & 2013/09/02 & 胡海星 & 重新定义\cs{ref}命令，
%                                使其前面自动加一个``\textasciitilde''\\
%  v1.1.3 & 2013/09/02 & 胡海星 & 修复了公式自动编号多了一个括号的bug\\
%  v1.1.4 & 2013/09/02 & 胡海星 & 修复了附录的节编号错误\newline
%                                按照\std{CY/T 35-2001}规范修改了图、表、公式、
%                                定理的编号样式\\
%  v1.1.5 & 2013/09/03 & 胡海星 & 修改了参考文献引用编号和脚注编号的样式，使其符合
%                                \std{GB/T 7714-2005}规范\newline
%                                去除了用处不大的批注功能\\
%  v1.1.6 & 2013/09/15 & 胡海星 & 修改了项目主页网址 \\
%  v1.1.7 & 2013/10/18 & 胡海星 & 根据相应的国家规范，将``目录''改为``目次''，
%                                将``插图索引''改为``插图清单''，
%                                将``表格索引''改为``附表清单''\\
%  v1.1.8 & 2014/12/22 & 胡海星 & 修改|tabular|环境中的行间距为正文行间距\\
%  v1.1.9 & 2015/01/28 & 胡海星 & 改用|longtable|作为``修订历史''表格环境\\
%  v1.1.10 & 2015/01/28 & 胡海星 & 修复Tex Live 2014引入的|xeCJK|使用|CJKnumber|选项后
%                                 找不到|CJKnumber|命令的bug\\
%  v1.1.11 & 2015/04/14 & 胡海星 & 增加|notation|环境\\
%  v1.1.12 & 2015/06/14 & 胡海星 & 增加情况分类列表|caseenum|环境和步骤列表|stepenum|环境\\
%  v1.1.13 & 2015/06/14 & 胡海星 & 增加公设环境|postulate| \\
%  v1.1.14 & 2015/06/14 & 胡海星 & 恢复了|algorithm|环境的定义 \\
%  v1.1.15 & 2015/06/16 & 胡海星 & 为|url|宏包添加|hyphens|选项 \\
%  v1.1.16 & 2015/06/22 & 胡海星 & 增加假说环境|hypothesis| \\
%  v1.1.17 & 2015/06/27 & 胡海星 & 修复了段落首行缩进不是恰好两个中文字符的bug，
%                                 修正了|proof|环境最后的QED符号，
%                                 修改了|solution|环境的实现方式 \\
%  v1.1.18 & 2015/07/16 & 胡海星 & 将公设环境|postulate|和定律环境单独编号\\
%  v1.1.19 & 2016/02/24 & 胡海星 & 提供了论文标题很长时的解决方案；
%                                 修复了新版|xeCJKfntef|中|\CJKunderline|的颜色
%                                 设置方式不再兼容|CJKfntef|所引起的问题\\
%  v1.2.0  & 2017/05/23 & 胡海星 & 修复了本科生论文封面显示``研究生毕业论文''的错误；
%                                 将封面中的``研究方向''换到``指导老师''前面\\
%  v1.2.1  & 2017/12/24 & 胡海星 & 修正一些小问题，去除不需要的|dtxlogos|宏包；
%                                 兼容TeX Live 2017 \\
%  v1.2.2 & 2018/08/07 & 胡海星 & 更新中文字体下载链接 \\
% \bottomrule
% \end{longtable}
% \end{center}
% \clearpage
%
% \tableofcontents
% \clearpage
%
% \pagestyle{fancy}
% \section{简介}
%
% 文档类{\njuthesis}是为了帮助南京大学的同学撰写学位论文而编写的{\XeLaTeX}模板。
% 该模板提供了一个南京大学学位论文的{\XeLaTeX}文档类，用于生成符合南京大学学位
% 论文格式要求进行的学位论文。该宏包的底层通过|xeCJK|宏包支持中文。目前该宏包可
% 用于排版硕士学位论文和博士学位论文；对于学士学位论文，由于作者未能找到南京大学
% 对学士学位论文的格式要求，因此目前采用和硕士学位论文一样的格式进行排版。
%
% 虽然{\njuthesis}主要用于排版南京大学的学位论文，但亦可经过简单的设置或修改用于排版
% 国内其他大学的学位论文。
%
% 本文档将尽量完整的介绍{\njuthesis}的使用方法，如有不清楚之处可以参考示例文档或
% 者与作者联系。由于作者水平有限，虽然现在的这个版本基本上满足了学位论文的撰写需
% 求，但难免还存在不足之处，欢迎大家积极反馈意见。
%
% 本模板的编写过程中参考了以下代码和文档，这里一并向这些代码和文档的作者表示感谢：
%
% \begin{itemize}
% \item 杨文博. \textsl{南京大学学位论文{\LaTeX}模板}. \url{https://code.google.com/p/njuthesis/}.
% \item 薛瑞尼. \textsl{清华大学学位论文{\LaTeX}模板}.
% \item 胡卫谊. \textsl{武汉理工大学学位论文{\LaTeX}模板}.
% \item 吴凯. \textsl{GBT7714-2005NLang.bst}. v1.0 beta 2. 2006.
% \item \textsl{CTeX宏包}. \url{http://www.ctex.org}.
% \item The {\LaTeX}3 Project. \textsl{{\LaTeXe} for class and package writers}.
% \item Frank Mittelbach, Michel Gooseens. \textsl{The {\LaTeX} Companion}. 2nd ed.
% \item Scott Pakin. \textsl{How to Package Your {\LaTeX} Package}.
% \url{http://www.iitg.ernet.in/trivedi/LatexHelp/Latex%20Manual/dtxtut.pdf}.
% \item Oren Patashnik. \textsl{Designing \BibTeX Styles}. 1988.
% \end{itemize}
%
% \section{遵循的要求和标准}
%
% {\njuthesis}所遵循的南京大学研究生院的要求如下：
% \begin{itemize}
% \item \textsl{\sout{南京大学硕士答辩流程及相关材料下载}}，\\
% \sout{\url{http://gs.nju.edu.cn/content/xw/ss3.htm}}
% \item \textsl{\sout{南京大学博士答辩流程及相关材料下载}}，\\
% \sout{\url{http://gs.nju.edu.cn/content/xw/bs3.htm}}
% \item \textsl{\sout{南京大学博士(硕士)学位论文编写格式规定(试行)}}\\
% \sout{\url{http://grawww.nju.edu.cn/content/xw/lwgf.doc}}
% \item \textsl{硕士研究生申请学位材料下载}\\
% \url{https://grawww.nju.edu.cn/5d/aa/c1077a89514/page.htm}
% \item \textsl{博士(硕士)学位论文编写格式（供参考)}，\\
% \url{https://grawww.nju.edu.cn/31/16/c1039a12566/page.htm}
% \end{itemize}
%
% {\njuthesis}所遵循的中华人民共和国国家标准如下：
% \begin{itemize}
% \item \href{https://github.com/Haixing-Hu/typesetting-standard/raw/master/%E5%9B%BE%E4%B9%A6%E3%80%81%E6%9C%9F%E5%88%8A%E3%80%81%E8%AE%BA%E6%96%87%E7%9A%84%E7%BC%96%E6%8E%92/%E3%80%90GB:T%207714-2005%E3%80%91%E6%96%87%E5%90%8E%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE%E8%91%97%E5%BD%95%E8%A7%84%E5%88%99.pdf}%
% {\std{GB/T 7714-2005}\textsl{文后参考文献著录规则}}
% \item \href{https://github.com/Haixing-Hu/typesetting-standard/raw/master/%E5%9B%BE%E4%B9%A6%E3%80%81%E6%9C%9F%E5%88%8A%E3%80%81%E8%AE%BA%E6%96%87%E7%9A%84%E7%BC%96%E6%8E%92/%E3%80%90GB:T%207713.1-2006%E3%80%91%E5%AD%A6%E4%BD%8D%E8%AE%BA%E6%96%87%E7%BC%96%E5%86%99%E8%A7%84%E5%88%99.pdf}%
% {\std{GB/T 7713.1-2006}\textsl{学位论文编写规则}}%
% \item \href{https://github.com/Haixing-Hu/typesetting-standard/raw/master/%E5%9B%BE%E4%B9%A6%E3%80%81%E6%9C%9F%E5%88%8A%E3%80%81%E8%AE%BA%E6%96%87%E7%9A%84%E7%BC%96%E6%8E%92/%E3%80%90GB:T%207713.3-2009%E3%80%91%E7%A7%91%E6%8A%80%E6%8A%A5%E5%91%8A%E7%BC%96%E5%86%99%E8%A7%84%E5%88%99.pdf}%
% {\std{GB/T 7713.3-2009}\textsl{科技报告编写规则}}
% \item \href{https://github.com/Haixing-Hu/typesetting-standard/raw/master/%E5%9B%BE%E4%B9%A6%E3%80%81%E6%9C%9F%E5%88%8A%E3%80%81%E8%AE%BA%E6%96%87%E7%9A%84%E7%BC%96%E6%8E%92/%E3%80%90GB:T%207713-1987%E3%80%91%E7%A7%91%E5%AD%A6%E6%8A%80%E6%9C%AF%E6%8A%A5%E5%91%8A%E3%80%81%E5%AD%A6%E4%BD%8D%E8%AE%BA%E6%96%87%E5%92%8C%E5%AD%A6%E6%9C%AF%E8%AE%BA%E6%96%87%E7%9A%84%E7%BC%96%E5%86%99%E6%A0%BC%E5%BC%8F.pdf}%
% {\std{GB/T 7713-1987}\textsl{科学技术报告、学位论文和学术论文的编写格式}},
% 该标准已被%
% \href{https://github.com/Haixing-Hu/typesetting-standard/raw/master/%E5%9B%BE%E4%B9%A6%E3%80%81%E6%9C%9F%E5%88%8A%E3%80%81%E8%AE%BA%E6%96%87%E7%9A%84%E7%BC%96%E6%8E%92/%E3%80%90GB:T%207713.1-2006%E3%80%91%E5%AD%A6%E4%BD%8D%E8%AE%BA%E6%96%87%E7%BC%96%E5%86%99%E8%A7%84%E5%88%99.pdf}%
% {\std{GB/T 7713.1-2006}}和%
% \href{https://github.com/Haixing-Hu/typesetting-standard/raw/master/%E5%9B%BE%E4%B9%A6%E3%80%81%E6%9C%9F%E5%88%8A%E3%80%81%E8%AE%BA%E6%96%87%E7%9A%84%E7%BC%96%E6%8E%92/%E3%80%90GB:T%207713.3-2009%E3%80%91%E7%A7%91%E6%8A%80%E6%8A%A5%E5%91%8A%E7%BC%96%E5%86%99%E8%A7%84%E5%88%99.pdf}%
% {\std{GB/T 7713.3-2009}}部分替代
% \item \href{https://github.com/Haixing-Hu/typesetting-standard/raw/master/%E5%9B%BE%E4%B9%A6%E3%80%81%E6%9C%9F%E5%88%8A%E3%80%81%E8%AE%BA%E6%96%87%E7%9A%84%E7%BC%96%E6%8E%92/%E3%80%90GB:T%207156-2003%E3%80%91%E6%96%87%E7%8C%AE%E4%BF%9D%E5%AF%86%E7%AD%89%E7%BA%A7%E4%BB%A3%E7%A0%81%E4%B8%8E%E6%A0%87%E8%AF%86.pdf}%
% {\std{GB/T 7156-2003}\textsl{文献保密等级代码与标识}}
% \item \href{https://github.com/Haixing-Hu/typesetting-standard/raw/master/%E6%95%B0%E5%AD%97%E6%96%87%E5%AD%97/%E3%80%90GB:T%2016159-2012%E3%80%91%E6%B1%89%E8%AF%AD%E6%8B%BC%E9%9F%B3%E6%AD%A3%E8%AF%8D%E6%B3%95%E5%9F%BA%E6%9C%AC%E8%A7%84%E5%88%99.pdf}%
% {\std{GB/T 16159-2012}\textsl{汉语拼音正词法基本规则}}，
% 该标准取代了%
% \href{https://github.com/Haixing-Hu/typesetting-standard/raw/master/%E6%95%B0%E5%AD%97%E6%96%87%E5%AD%97/%E3%80%90GB:T%2016159-1996%E3%80%91%E6%B1%89%E8%AF%AD%E6%8B%BC%E9%9F%B3%E6%AD%A3%E8%AF%8D%E6%B3%95%E5%9F%BA%E6%9C%AC%E8%A7%84%E5%88%99.pdf}%
% {\std{GB/T 16159-1996}}
% \item \href{https://github.com/Haixing-Hu/typesetting-standard/raw/master/%E5%9B%BE%E4%B9%A6%E3%80%81%E6%9C%9F%E5%88%8A%E3%80%81%E8%AE%BA%E6%96%87%E7%9A%84%E7%BC%96%E6%8E%92/%E3%80%90CY:T%2035-2001%E3%80%91%E7%A7%91%E6%8A%80%E6%96%87%E7%8C%AE%E7%9A%84%E7%AB%A0%E8%8A%82%E7%BC%96%E5%8F%B7%E6%96%B9%E6%B3%95.pdf}%
% {\std{CY/T 35-2001}\textsl{科技文献的章节编号方法}}
% \end{itemize}
%
% 上述要求和标准的电子版均可在对应的链接地址中找到。
%
% \begin{note}
% 如南京大学研究生院对学位论文的格式要求和国家标准之间有冲突，以国家标准的要求为准。
% \end{note}
%
% \section{安装}
%
% \subsection{下载}
%
% 可在{\njuthesis}项目主页上下载最新版本，亦可在代码库主页上反馈bug和意见建议：
% \begin{itemize}
% \item 项目主页：\url{http://haixing-hu.github.io/nju-thesis/}
% \item 代码库主页：\url{https://github.com/Haixing-Hu/nju-thesis}
% \end{itemize}
%
% \subsection{模板的组成部分}
%
% \begin{table}
%   \centering\noindent
%   \begin{tabular*}{\textwidth}{p{4cm}p{\textwidth-4.5cm}}
%     \toprule
%     \textbf{文件（夹）}        & \textbf{功能描述}\\
%     \midrule
%     |njuthesis.ins|             & 模板驱动文件 \\
%     |njuthesis.dtx|             & 模板文档代码的混合文件\\
%     |njuthesis.cls|             & 模板类文件\\
%     |njuthesis.cfg|             & 模板配置文件\\
%     |gbt7714-2005.bst|          & 符合国标\std{GB/T 7714-2005}的参考文献样式文件\\
%     |dtx-style.sty|             & 用户手册样式文件\\
%     |njulogo.eps|               & 南京大学校徽图片\\
%     |njuname.eps|               & 南京大学校名图片\\
%     \hline
%     |sample.tex|                & 示例文档，亦可作为学位论文的基本模板 \\
%     |sample.bib|                & 示例文档的参考文献数据库 \\
%     |figures/|                  & 示例文档图片目录\\
%     \hline
%     |Makefile|                  & make 脚本 \\
%     |get_texmf_dir.sh|          & 获取本地|textmf|目录路径的脚本\\
%     \hline
%     |README.md|                 & 说明文件 \\
%     |njuthesis.pdf|             & 用户手册（本文档）\\
%     \bottomrule
%   \end{tabular*}
%   \caption{{\njuthesis}的主要文件及其功能}\label{table:component}
% \end{table}
%
% 表\ref{table:component}列出了{\njuthesis}的主要文件及其功能。其中|njuthesis.cls|,
% |njuthesis.cfg|和|dtx-sty.sty|可以由|njuthesis.ins|和|njuthesis.dtx|生成，但为
% 了降低新手用户的使用难度，故将其一起发布。
%
% \subsection{准备工作}
%
% 表\ref{table:dependence}列出了{\njuthesis}模板用到的宏包。这些包在常见的{\TeX}系
% 统中都有（推荐使用{\texlive}），如果没有请到\url{www.ctan.org}下载。
%
% \begin{table}
%   \centering\noindent
%   \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}*{6}{l}}
%   \hline
%     |ifxetex|  & |indentfirst| & |xeCJK|    & |lastpage| & |geometry|  & |graphicx| \\
%     |subfig|   & |caption|     & |float|    & |array|    & |longtable| & |booktabs| \\
%     |multirow| & |hyperref|    & |enumitem| & |xcolor|   & |amsmath|   & |amsfonts| \\
%     |amsthm|   & |amssymb|    & |bm|        & |mathrsfs| & |txfonts|  & |pifont|  \\
%     |setspace| & |wasysym|    & |hypernat| & |fancyhdr| & |natbib|    & |tabularx| \\
%     |titlesec| & |glossaries|  & |ifthen|   & |makeidx| & |footmisc| &  |CJKnumb| \\
%     |url|      & |etoolbox| &  &  &  & \\
%   \hline
%   \end{tabular*}
%   \caption{{\njuthesis}用到的宏包}\label{table:dependence}
% \end{table}
%
% \subsection{推荐的{\TeX}系统}
%
% 本模板当前版本v{\fileversion}{\ }({\filedate})在{\texlive}下编写，尚未在其他
% {\TeX}系统上测试。因此推荐用户使用{\texlive}。其安装包可以在下述网址下载：
% \begin{center}
% \url{http://tug.org/texlive/}
% \end{center}
%
% \begin{note}
% 由于本模板采用{\XeLaTeX}引擎处理，所以{\TeX}源文件应使用\textbf{UTF-8}编码。
% \end{note}
%
% \subsection{开始安装}
%
% \subsubsection{生成模板}
%
% 默认的发行包中已经包含了所有文件，可以直接使用。如果对如何由|*.dtx|生成模板文件以及模板文
% 档不感兴趣，请跳过本小节。
%
% 模板解压缩后生成文件夹|njuthesis-VERSION|，其中|VERSION|为版本号。该文件夹中包括：
% \begin{itemize}
% \item 模板源文件：|njuthesis.ins|和|njuthesis.dtx|
% \item 参考文献样式：|gbt7714-2005.bst|
% \item 南京大学校徽和校名图片：|njulogo.eps|和|njuname.eps|
% \item 示例文档：|sample.tex|、|sample.bib|和|figure|目录
% \end{itemize}
%
% 在使用之前需要先生成模板文件和配置文件，具体命令细节请参考|README|和|Makefile|。下面是
% 在Linux或Mac系统中生成模板所需执行的|shell|命令：
%
% \begin{shell}
% $ cd njuthesis-VERSION
% # 清理以前执行make生成的旧文件
% $ make clean
% # 生成 njuthesis.cls 和 njuthesis.cfg
% $ make cls
% # 生成文档类手册
% $ make doc
% # 生成样例文档
% $ make sample
% \end{shell}
%
% \subsubsection{安装到{\TeX}系统中}
%
% 假设当前{\TeX}系统的texmf-local目录为|${TEXMFLOCAL}|。下面是在Linux或Mac系统中将模
% 板安装到本机的{\TeX}系统中所需执行的|shell|命令：
%
% \begin{shell}
% $ cd njuthesis-VERSION
% # 建立njuthesis文档类目录
% $ mkdir -p ${TEXMFLOCAL}/tex/latex/njuthesis
% # 复制njuthesis文档类文件
% $ cp njuthesis.cls ${TEXMFLOCAL}/tex/latex/njuthesis/
% $ cp njuthesis.cfg ${TEXMFLOCAL}/tex/latex/njuthesis/
% $ cp njulogo.eps  ${TEXMFLOCAL}/tex/latex/njuthesis/
% $ cp njuname.eps  ${TEXMFLOCAL}/tex/latex/njuthesis/
% # 复制njuthesis文档类的源码，此过程可选
% $ cp njuthesis.ins ${TEXMFLOCAL}/tex/latex/njuthesis/
% $ cp njuthesis.dtx ${TEXMFLOCAL}/tex/latex/njuthesis/
% # 创建本地的BibTeX样式文件目录
% $ mkdir -p ${TEXMFLOCAL}/bibtex/bst
% # 复制GB/T 7714-2005参考文献样式
% $ cp gbt7714-2005.bst ${TEXMFLOCAL}/bibtex/bst/
% # 建立njuthesis文档类手册目录
% $ mkdir -p ${TETEXMFLOCALXMF}/doc/latex/njuthesis
% # 复制njuthesis文档类手册和示例文档
% $ cp njuthesis.pdf ${TEXMFLOCAL}/doc/latex/njuthesis/
% $ cp sample.pdf ${TEXMFLOCAL}/doc/latex/njuthesis/
% # 刷新tex文件名数据库
% $ texhash
% \end{shell}
%
% \begin{note}
% 上面的某些命令可能需要管理员权限，或通过|sudo|执行。
% \end{note}
%
% 当然，也可以直接使用|Makefile|提供的|install|操作进行安装：
% \begin{shell}
% $ sudo make install
% \end{shell}
%
% \begin{note}
% |Makefile|使用了脚本|get_texmf_dir.sh|来获取当前机器上所安装的{\TeX}系统的本地
% |textmf|目录（通常是{\TeX}安装目录下的|textmf-local|目录）。用户最好在执行
% |make install|之前先执行一下|get_texmf_dir.sh|脚本，看看输出的目录路径是否正确。
% 如不正确，可以手工修改|Makefile|中对|TEXMFLOCAL|变量的定义。
% \end{note}
%
% \section{使用说明}
%
% 本手册假定用户已经能处理一般的{\LaTeX}文档，并对{\BibTeX}有一定了解。如果你从来没有接
% 触过{\TeX}和{\LaTeX}，建议先学习相关的基础知识。
%
% \subsection{\njuthesis{} 示例文件}
%
% 模板核心文件只有三个：|njuthesis.cls|，|njuthesis.cfg|和 |gbt7714-2005.bst|，但
% 是如果没有示例文档用户会发现很难下手。所以推荐新用户从模板自带的示例文档入手，
% 里面包括了文档写作用到的所有命令及其使用方法，只需要用自己的内容进行相应替换就
% 可以。对于不清楚的命令可以查阅本手册。具体内容可以参考模板附带的|sample.tex|和
% |sample.bib|。
%
% \subsection{选项}
%
% 本文档类提供了一些选项以方便使用：
% \begin{description}
% \item[winfonts, linuxfonts, macfonts, adobefonts] |winfonts|选项使得文档使
%   用Windows系统提供的字体；|linuxfonts|选项使得文档使用Linux系统提供的字
%   体；|macfonts|选项使得文档使用Mac系统提供的字体；|adobefonts|选项使得文档使
%   用Adobe提供的OTF中文字体，一般来说OTF字体的显示效果要优于ttf字体。
%   默认选项是|adobefonts|。
% \begin{example}
% \documentclass[winfonts]{njuthesis}
% \end{example}
%   表\ref{table:fontnames}中列出了默认配置下使用不同字体选项时所采用的实际字体
%   名称。系统中必须正确安装了相应的字体才能正常编译文档。\\
%   模板用到的字体可以在下面的代码库下载：\\
%   \url{https://github.com/Haixing-Hu/latex-chinese-fonts}\\
%   \begin{table}
%     \centering\noindent
%     \begin{tabular}[t]{ccccc}
%     \toprule
%           & \textbf{adobefonts} &  \textbf{winfonts} & \textbf{linuxfonts} & \textbf{macfonts} \\
%     \midrule
%     \textbf{宋体} & {Adobe Song Std}  & {SimSun} & {AR PL SungtiL GB} &  {STSong} \\
%     \textbf{黑体} & {Adobe Heiti Std} & {SimHei} & {WenQuanYi Zen Hei Mono} &  {STHeiti} \\
%     \textbf{楷书} & {Adobe Kaiti Std} & {KaiTi}  & {AR PL KaitiM GB} & {STKaiti} \\
%     \textbf{仿宋体} & {Adobe Fangsong Std} & {FangSong} & {STFangsong} & {STFangsong} \\
%     \textbf{英文衬线字体(Serif)} & {Times} & {Times New Roman} & {Times} & {Times} \\
%     \textbf{英文非衬线字体(Sans Serif)} & {Helvetica} & {Arial} & {Helvetica} & {Helvetica} \\
%     \textbf{英文等宽字体(Monospace)} & {Courier} & {Courier New} & {Courier} & {Courier} \\
%     \bottomrule
%     \end{tabular}
%     \caption{默认配置下不同字体选项所使用的实际字体名称}
%     \label{table:fontnames}
%   \end{table}
%
% \item[nobackinfo] 该选项用于控制是否在封面背面打印导师签名信息。如果设置了此选
%   项，则不在封面背面打印导师签名信息。此选项默认不被设置，一般情况下也无需设置
%   该选项。
% \begin{example}
% \documentclass[winfonts,nobackinfo]{njuthesis}
% \end{example}
%
% \item[phd, master, bachelor] 用于设置申请的学位级别。当选择|phd|时，生成南京大学博
% 士学位论文，包含国家图书馆格式的封面，但不包括书脊，书脊需要单独制作；选择|master|时，
% 生成南京大学硕士学位论文；选择|bachelor|时，生成南京大学学士学位论文。
% \begin{example}
% \documentclass[winfonts,phd]{njuthesis}
% \end{example}
% \begin{note}
% 这三个选项必须设置一个且只能设置一个。
% \end{note}
%
% \end{description}
%
% 本文档类不再提供对字号、字体和单双面打印的选择选项。因为国内各大学的学位论文基本上都要求
% 使用小四号宋体，双面打印。
%
% \subsection{命令和环境}
%
% 文档类中的命令和环境分为三类：一是格式控制，二是内容替换，三是文档结构。格式控制如字体、字
% 号、字距和行距等；内容替换如文档名称、作者、项目、编号等；文档结构如中文摘要、中文关键词、
% 英文摘要、英文关键词、作者简历、致谢等。
%
% \subsubsection{格式控制命令}
%
% \myentry{中文字体}
% \DescribeMacro{\songti}
% \DescribeMacro{\heiti}
% \DescribeMacro{\kaishu}
% \DescribeMacro{\fangsong}
% 可采用下述命令选择中文字体
% \begin{itemize}
% \item \cs{songti} 切换宋体
% \item \cs{heiti} 切换黑体
% \item \cs{kaishu} 切换楷书
% \item \cs{fangsong} 切换仿宋体
% \end{itemize}
%
% \begin{example}
% {\songti 乾：元，亨，利贞}
% {\heiti 九二，见龙在田，利见大人}
% {\kaishu 九三，君子终日乾乾，夕惕若，厉，无咎}
% {\fangsong 九四，或跃在渊，无咎}
% \end{example}
%
% \myentry{字号}
% \DescribeMacro{\zihao}
% \cs{zihao}命令可用于选择字号。其语法为：
% \begin{syntax}
% \cs{zihao}\marg{n}
% \end{syntax}
% 其中参数\meta{n}为要使用的字号；在\meta{n}前加负号$-$表示小号字体。目前提供的字号包括：
% \begin{itemize}
% \item 初号(|\zihao{0}|)、小初号(|\zihao{-0}|)
% \item 一号(|\zihao{1}|)、小一号(|\zihao{-1}|)
% \item 二号(|\zihao{2}|)、小二号(|\zihao{-2}|)
% \item 三号(|\zihao{3}|)、小三号(|\zihao{-3}|)
% \item 四号(|\zihao{4}|)、小四号(|\zihao{-4}|)
% \item 五号(|\zihao{5}|)、小五号(|\zihao{-5}|)
% \item 六号(|\zihao{6}|)、小六号(|\zihao{-6}|)
% \item 七号(|\zihao{7}|)
% \item 八号(|\zihao{8}|)
% \end{itemize}
%
% \begin{example}
% {\zihao{2} 二号} {\zihao{3} 三号} {\zihao{4} 四号} {\zihao{-4} 小四}
% \end{example}
%
% \myentry{字距}
% \DescribeMacro{\ziju}
% \cs{ziju}命令可用于更改汉字之间默认的距离。其语法为：
% \begin{syntax}
% \cs{ziju}\marg{width}
% \end{syntax}
% 其中的参数\meta{width}只要是合格的{\TeX}距离即可。
%
% \begin{example}
% {\ziju{4bp}调整字距示例}
% \end{example}
%
% \myentry{缩进}
% \DescribeMacro{\indent}
% \DescribeMacro{\noindent}
% \cs{indent}命令将当前行正常的缩进两个汉字字宽的距离，同时在汉字大小和字距改变的情况都
% 可以自动修改缩进距离。
%
% \cs{noindent}则取消缩进。
%
% \myentry{破折号}
% \DescribeMacro{\zhdash}
% 中文破折号在CJK-{\LaTeX}里没有很好的处理，我们平时输入的都是两个小短线，比如这样，
% ``{中国——中华人民共和国}''。这不符合中文习惯。所以这里定义了一个命令生成更好看的破折号。
% 不过这似乎不是一个好的解决办法，比如不能用在\cs{section}等命令中使用。简单的办法是可以
% 提供一个不带破折号的段标题：
% \begin{syntax}
% \cs{section}\oarg{没有破折号精简标题}\marg{带破折号的标题}
% \end{syntax}
%
% \begin{example}
% 测试--中文破折号
% 测试{\zhdash}中文破折号
% \end{example}
%
% 上述例子的显示效果分别如下：
% \begin{itemize}
% \item 测试--中文破折号
% \item 测试{\zhdash}中文破折号
% \end{itemize}
%
% \subsubsection{国家图书馆封面内容替换命令}
%
% 本节描述论文的国家图书馆封面的内容替换命令。只有博士学位论文才需要提供国家图书
% 馆封面。若申请的学位为硕士或学士，则可完全忽略本节所描述的命令。
%
% \myentry{分类号}
% \DescribeMacro{\classification}
% 命令\cs{classification}用于设置论文按照《中国图书资料分类法》的分类编号。此属性
% 必须被设置。具体的分类号需咨询学校图书馆的老师。
%
% \begin{example}
%   \classification{O175.2}
% \end{example}
%
% \myentry{密级}
% \DescribeMacro{\securitylevel}
% \DescribeMacro{\openlevel}
% \DescribeMacro{\controllevel}
% \DescribeMacro{\confidentiallevel}
% \DescribeMacro{\clasifiedlevel}
% \DescribeMacro{\mostconfidentiallevel}
% 命令\cs{securitylevel}设置论文的密级。论文的密级必须按照\std{GB/T 7156-2003}标准
% 进行填写。
%
% 根据\std{GB/T 7156-2003}标准，文献保密等级分为$5$级,即“公开级”、“限制级”、
% “秘密级”、“机密级”、“绝密级”。本文档类中预定义了该标准中文献保密等级的五个等级的
% 代码常量：
% \begin{enumerate}
% \item \cs{openlevel}，表示公开级：此级别的文献可在国内外发行和交换。
% \item \cs{controllevel}，表示限制级：此级别的文献内容不涉及国家秘密，但在一定时间内
% 限制其交流和使用范围。
% \item \cs{confidentiallevel}，表示秘密级：此级别的文献内容涉及一般国家秘密。
% \item \cs{clasifiedlevel}，表示机密级：此级别的文献内容涉及重要的国家秘密 。
% \item \cs{mostconfidentiallevel}，表示绝密级：此级别的文献内容涉及最重要的国家秘密。
% \end{enumerate}
%
% 如果未设置\cs{securitylevel}，其默认值将被设置为\cs{openlevel}，即“公开级”。
%
% \begin{example}
% \securitylevel{\controllevel}
% \end{example}
%
% \myentry{UDC编号}
% \DescribeMacro{\udc}
% 命令\cs{udc}用于设置论文按照《国际十进分类法UDC》的分类编号。此属性可选，默认值为空白。
%
% 国际十进分类法（Universal Decimal Classification，简称UDC），又称为通用十进制
% 分类法，是世界上规模最大、用户最多、影响最广泛的一部文献资料分类法。自
% 1899--1905年比利时学者奥特勒和拉封丹共同主编、出版UDC法文第一版以来，现已有20
% 多种语言的各种详略版本。近百年来，UDC已被世界上几十个国家的10多万个图书馆和情
% 报机构采用。UDC目前已成为名符其实的国际通用文献分类法。
%
% 论文的具体UDC编号需咨询学校图书馆的老师，或在下面网址查询：
% \begin{center}
% \url{http://www.udcc.org/udcsummary/php/index.php?lang=chi}
% \end{center}
%
% \begin{example}
% \udc{004.72}
% \end{example}
%
% \myentry{论文标题及副标题}
% \DescribeMacro{\nlctitlea}
% \DescribeMacro{\nlctitleb}
% \DescribeMacro{\nlctitlec}
% 命令\cs{nlctitlea}、\cs{nlctitleb}和\cs{nlctitlec}分别用于设置国家图书馆封面的
% 论文标题及副标题的第一行、第二行和第三行。其中，\cs{nlctitlea}为可选，默认值为
% 用户通过\cs{title}命令设置的中文标题；\cs{nlctitleb}和\cs{nlctitlec}亦为可选，
% 其默认值为空白。这三个命令是为了让用户在论文标题较长时手动进行分割换行。
%
% \begin{example}
% \nlctitlea{基于小世界理论的}
% \nlctitleb{数据中心网络模型研究}
% \end{example}
%
% \begin{note}
% \cs{nlctitlea}、\cs{nlctitleb}和\cs{nlctitlec}命令的参数中都不能再出现换行。
% \end{note}
%
% \myentry{导师信息}
% \DescribeMacro{\supervisorinfo}
% 命令\cs{supervisorinfo}用于设置论文作者的导师的单位名称及联系地址。此属性必须被设置。
%
% \begin{example}
% \supervisorinfo{南京大学计算机科学与技术系，南京市汉口路22号，210093}
% \end{example}
%
% \myentry{答辩委员会主席}
% \DescribeMacro{\chairman}
% 命令\cs{chairman}用于设置论文答辩委员会主席的姓名和职称。此属性必须被设置。
%
% \begin{example}
% \chairman{王重阳\hspace{1em}教授}
% \end{example}
%
% \myentry{评阅人}
% \DescribeMacro{\reviewera}
% \DescribeMacro{\reviewerb}
% \DescribeMacro{\reviewerc}
% \DescribeMacro{\reviewerd}
% 命令\cs{reviewera}、\cs{reviewerb}、\cs{reviewerc}、\cs{reviewerd}分别用于设置
% 论文的第一、第二、第三和第四评阅人的姓名和职称。这四个命令为可选，默认值为空白。
%
% \begin{example}
% \reviewera{张三丰~~教授}
% \reviewerb{张无忌~~副教授}
% \reviewerc{黄裳~~教授}
% \reviewerd{郭靖~~研究员}
% \end{example}
%
% \subsubsection{中文封面内容替换命令}
%
% 本节描述论文中文封面的内容替换命令。
%
% \myentry{论文标题}
% \DescribeMacro{\title}
% 命令\cs{title}用于设置论文的中文标题。
%
% \begin{example}
% \title{基于小世界理论的数据中心网络模型}
% \end{example}
%
% \begin{note}
% \cs{title}的参数中不可换行，也不能使用\cs{thanks}脚注。
% \end{note}
%
% \myentry{论文标题分行}
% \DescribeMacro{\titlea}
% \DescribeMacro{\titleb}
% 命令\cs{titlea}和\cs{titleb}用于在论文标题很长时，设置分行的论文中文标题。
% 其中\cs{titlea}设置论文标题的第一行，\cs{titleb}设置论文标题的第二行。
%
% \begin{example}
% \titlea{半轻衰变$D^+\to \omega(\phi)e^+\nu_e$的研究}
% \titleb{和弱衰变$J/\psi \to D_s^{(*)-}e^+\nu_e$的寻找}
% \end{example}
%
% \begin{note}
% \cs{title}的参数中不可换行，也不能使用\cs{thanks}脚注。
% \end{note}
%
% \myentry{作者姓名}
% \DescribeMacro{\author}
% 命令\cs{author}用于设置论文作者的姓名。此属性必须被设置。
%
% \begin{example}
% \author{张三}
% \end{example}
%
% \begin{note}
% \cs{author}的参数中不可换行，也不能使用\cs{thanks}脚注。
% \end{note}
%
% \myentry{作者电话}
% \DescribeMacro{\telphone}
% 命令\cs{telphone}用于设置论文作者的电话号码。此属性必须被设置。
%
% \begin{example}
% \telphone{13671413272}
% \end{example}
%
% \myentry{作者邮件}
% \DescribeMacro{\email}
% 命令\cs{email}用于设置论文作者的电子邮件地址。此属性必须被设置。
%
% \begin{example}
% \email{san.zhang@gmail.com}
% \end{example}
%
% \myentry{作者学号}
% \DescribeMacro{\studentnum}
% 命令\cs{studentnum}用于设置论文作者的学号。此属性必须被设置。
%
% \begin{example}
% \studentnum{MGXXXXXXX}
% \end{example}
%
% \myentry{入学年份}
% \DescribeMacro{\grade}
% 命令\cs{grade}用于设置论文作者的入学年份（即年级），用一个阿拉伯数字表示。此属性
% 必须被设置。
%
% \begin{example}
% \grade{2012}
% \end{example}
%
% \myentry{导师姓名职称}
% \DescribeMacro{\supervisor}
% 命令\cs{supervisor}用于设置论文作者的导师的姓名和职称。此属性必须被设置。
%
% \begin{example}
% \supervisorname{李四~~教授}
% \end{example}
%
% \myentry{导师电话}
% \DescribeMacro{\supervisortelphone}
% 命令\cs{supervisortelphone}用于设置论文作者的导师的姓名和职称。此属性必须被设置。
%
% \begin{example}
% \supervisortelphone{13671607471}
% \end{example}
%
% \myentry{学科专业}
% \DescribeMacro{\major}
% 命令\cs{major}用于设置论文作者的学科与专业方向。此属性必须被设置。
%
% \begin{example}
% \major{计算机软件与理论}
% \end{example}
%
% \begin{note}
% \cs{major}的参数中不可换行。
% \end{note}
%
% \myentry{研究方向}
% \DescribeMacro{\researchfield}
% 命令\cs{researchfield}用于设置论文作者的研究方向。此属性必须被设置。
%
% \begin{example}
% \major{计算机网络与信息安全}
% \end{example}
%
% \begin{note}
% \cs{researchfield}的参数中不可换行。
% \end{note}
%
% \myentry{院系名称}
% \DescribeMacro{\department}
% 命令\cs{department}用于设置论文作者所在院系的中文名称。此属性必须被设置。
%
% \begin{example}
% \department{计算机科学与技术系}
% \end{example}
%
% \begin{note}
% \cs{department}的参数中不可换行。
% \end{note}
%
% \myentry{学校名称}
% \DescribeMacro{\institute}
% 命令\cs{institute}用于设置论文作者所在学校或机构的名称，该学校或机构也是所申请学
% 位的颁发机构。此命令为可选，默认值为``南京大学''。
%
% \begin{example}
% \institute{南京大学}
% \end{example}
%
% \begin{note}
% \cs{institute}的参数中不可换行。
% \end{note}
%
% \myentry{提交日期}
% \DescribeMacro{\submitdate}
% 命令\cs{submitdate}用于设置论文的提交日期，需设置年、月、日。此属性必须被设置。
%
% \begin{example}
% \submitdate{2013年6月10日}
% \end{example}
%
% \myentry{答辩日期}
% \DescribeMacro{\defenddate}
% 命令\cs{defenddate}用于设置论文的答辩日期，需设置年、月、日。此属性必须被设置。
%
% \begin{example}
% \defenddate{2013年6月27日}
% \end{example}
%
% \myentry{定稿日期}
% \DescribeMacro{\date}
% 命令\cs{date}用于设置论文的定稿日期，该日期将出现在中文封面下方以及书脊下方。需设
% 置年、月、日。此属性可选，默认值为最后一次编译时的日期，精确到日。
%
% \begin{example}
% \date{2013年5月27日}
% \end{example}
%
% \subsubsection{英文封面内容替换命令}
%
% 本节描述论文的英文封面的内容替换命令。
%
% \myentry{论文标题}
% \DescribeMacro{\englishtitle}
% 命令\cs{englishtitle}用于设置论文的英文标题。此属性必须被设置。
%
% \begin{example}
% \englishtitle{Network Models of Data Centers based on the Small World Theory}
% \end{example}
%
% \begin{note}
% \cs{englishtitle}的参数中不可换行，也不能使用\cs{thanks}脚注。
% \end{note}
%
% \myentry{作者姓名}
% \DescribeMacro{\englishauthor}
% 命令\cs{englishauthor}用于设置论文的作者姓名的汉语拼音，此属性必须被设置。
% \begin{suggestion}
% 作者姓名的汉语拼音必须遵循\std{GB/T 16159-2012}标准。
% \end{suggestion}
%
% \begin{example}
% \englishauthor{Wei Xiaobao}
% \end{example}
%
% \begin{note}
% \cs{englishauthor}的参数中不可换行，也不能使用\cs{thanks}脚注。
% \end{note}
%
% \myentry{导师姓名职称}
% \DescribeMacro{\englishsupervisor}
% 命令\cs{englishsupervisor}用于设置论文作者的导师姓名的汉语拼音和导师职称的英文翻译。
% 此属性必须被设置。
% \begin{suggestion}
% 导师姓名的汉语拼音必须遵循\std{GB/T 16159-2012}标准。
% \end{suggestion}
%
% \begin{example}
% \englishsupervisor{Professor CHEN Jin-Nan}
% \end{example}
%
% \myentry{作者专业}
% \DescribeMacro{\englishmajor}
% 命令\cs{englishmajor}用于设置论文作者的学科与专业方向的英文名。此属性必须被设置。
%
% \begin{example}
% \englishmajor{Compuer Software and Theory}
% \end{example}
%
% \begin{note}
% \cs{englishmajor}的参数中不可换行。
% \end{note}
%
% \myentry{院系名称}
% \DescribeMacro{\englishdepartment}
% 命令\cs{englishdepartment}用于设置论文作者所在院系的英文名称。此属性必须被设置。
%
% \begin{example}
% \englishdepartment{Department of Computer Science and Technology}
% \end{example}
%
% \begin{note}
% \cs{englishdepartment}的参数中不可换行。
% \end{note}
%
% \myentry{学校名称}
% \DescribeMacro{\englishinstitute}
% 命令\cs{englishinstitute}用于设置论文作者所在学校或机构的英文名称，此学校或机构
% 也是所申请学位的颁发机构。此属性可选，默认值为``Nanjing University''。
%
% \begin{example}
% \englishinstitute{Nanjing University}
% \end{example}
%
% \begin{note}
% \cs{englishinstitute}的参数中不可换行。
% \end{note}
%
% \myentry{完成日期}
% \DescribeMacro{\englishdate}
% 命令\cs{englishdate}用于设置论文完成日期的英文形式，它将出现在英文封面下方。需
% 设置年、月、日。日期格式使用美国的日期格式，即``Month day, year''，其中
% ``Month''为月份的英文名全称，首字母大写；``day''为该月中日期的阿拉伯数字表示；
% ``year''为年份的四位阿拉伯数字表示。此属性可选，默认值为最后一次编译时的日期。
%
% \begin{example}
% \englishdate{May 1, 2013}
% \end{example}
%
% \subsubsection{中文摘要页内容替换命令}
%
% 本节描述论文的中文摘要页的内容替换命令。
%
% \myentry{标题及副标题}
% \DescribeMacro{\abstracttitlea}
% \DescribeMacro{\abstracttitleb}
% 命令\cs{abstracttitlea}和\cs{abstracttitleb}分别用于设置中文摘要页面的论文标题
% 及副标题的第一行和第二行。\cs{abstracttitlea}命令为可选，其默认值为使用\cs{title}
% 命令所设置的论文标题；\cs{abstracttitleb}命令为可选，其默认值为空白。这两个命令
% 是为了让用户在论文标题较长时手动进行分割换行。
%
% \begin{example}
% \abstracttitlea{基于小世界理论的}
% \abstracttitleb{数据中心网络模型研究}
% \end{example}
%
% \begin{note}
% \cs{abstracttitlea}和\cs{abstracttitleb}命令的参数中都不能出现换行。
% \end{note}
%
% \subsubsection{英文摘要页内容替换命令}
%
% 本节描述论文的英文摘要页的内容替换命令。
%
% \myentry{标题及副标题}
% \DescribeMacro{\englishabstracttitlea}
% \DescribeMacro{\englishabstracttitleb}
% 命令\cs{abstracttitlea}和\cs{abstracttitleb}分别用于设置英文摘要页面的论文标题
% 及副标题的第一行和第二行。\cs{englishabstracttitlea}命令为可选，其默认值为使用
% \cs{englishtitle}命令所设置的论文英文标题；\cs{englishabstracttitleb}命令为可
% 选，其默认值为空白。这两个命令是为了让用户在论文标题较长时手动进行分割换行。
%
% \begin{example}
% \englishabstracttitlea{A Network Model of Data Centers}
% \englishabstracttitleb{Based on the Small World Theory}
% \end{example}
%
% \begin{note}
% \cs{englishabstracttitlea}和\cs{englishabstracttitleb}命令的参数中都不能换行。
% \end{note}
%
% \subsubsection{文档结构命令和环境}
%
% 本节描述论文中可能用到的其他文档结构命令和环境。
%
% \myentry{生成国家图书馆封面}
% \DescribeMacro{\makenlctitle}
% 命令\cs{makenlctitle}用于生成论文的国家图书馆封面。此命令必须被用在{\TeX}文档
% 的\cs{begin{document}}命令之后和\cs{frontmatter}命令之前。目前只有博士学位论文要
% 求制作国家图书馆封面，硕士学位论文和学士学位论文不需要。
%
% \begin{example}
% \makenlctitle
% \end{example}
%
% \myentry{生成中文封面}
% \DescribeMacro{\maketitle}
% 命令\cs{maketitle}用于生成论文的中文封面。此命令必须被用在{\TeX}文档的
% \cs{begin{document}}命令之后和\cs{frontmatter}命令之前。
%
% \begin{example}
% \maketitle
% \end{example}
%
% \myentry{生成英文封面}
% \DescribeMacro{\makeenglishtitle}
% 命令\cs{makeenglishtitle}用于生成论文的英文封面。此命令必须被用在{\TeX}文档的
% \cs{begin{document}}命令之后和\cs{frontmatter}命令之前。
%
% \begin{example}
% \makeenglishtitle
% \end{example}
%
% \myentry{中文摘要}
% \DescribeEnv{abstract}
% \env{abstract}为中文摘要环境。此环境必须被用在{\TeX}文档的\cs{frontmatter}命令之后和
% \cs{mainmatter}命令之前。
%
% \begin{example}
% \begin{abstract}
% 本文基于小世界理论，研究了数据中心的网络模型。………………
% \end{abstract}
% \end{example}
%
% \myentry{中文关键词}
% \DescribeMacro{\keywords}
% 命令\cs{keywords}用于设置中文关键词。此命令必须被用在\env{abstract}环境中。关键词
% 之间用中文全角分号隔开。
%
% \begin{example}
% \begin{abstract}
% 本文基于小世界理论，研究了数据中心的网络模型。………………
% \keywords{数据中心；网络模型；小世界理论}
% \end{abstract}
% \end{example}
%
% \myentry{英文摘要}
% \DescribeEnv{englishabstract}
% \env{englishabstract}为英文摘要环境。此环境必须被用在{\TeX}文档的
% \env{abstract}环境之后和\cs{mainmatter}命令之前。
%
% \begin{example}
% \begin{englishabstract}
% In this paper, we studied the network model of data centers,
% based on the theory of small worlds. ....
% \end{englishabstract}
% \end{example}
%
% \myentry{英文关键词}
% \DescribeMacro{\englishkeywords}
% 命令\cs{englishkeywords}用于设置英文关键词。此命令必须被用在\env{englishabstract}
% 环境中。关键词之间用英文半角逗号隔开。
%
% \begin{example}
% \begin{englishabstract}
% In this paper, we studied the network model of data centers,
% based on the theory of small worlds. ....
% \englishkeywords{Data Center, Network Model, Small World}
% \end{englishabstract}
% \end{example}
%
% \myentry{前言}
% \DescribeEnv{preface}
% \env{preface}为论文前言环境。此环境必须被用在{\TeX}文档的
% \env{englishabstract}环境之后和\cs{tableofcontents}命令之前。
%
% \begin{example}
% \begin{preface}
%  复杂网络的研究可上溯到20世纪60年代对ER网络的研究。90年后代随着Internet
%  的发展，以及对人类社会、通信网络、生物网络、社交网络等各领域研究的深入，
%  发现了小世界网络和无尺度现象等普适现象与方法。对复杂网络的定性定量的科
%  学理解和分析，已成为如今网络时代科学研究的一个重点课题。
%
%  在此背景下，由于云计算时代的到来，本文针对面向云计算的数据中心网络基础
%  设施设计中的若干问题，进行了几方面的研究。本文的创造性研究成果主要如下
%  几方面：
%
%  ………
%
%
%  \vspace{1cm}
%  \begin{flushright}
%   韦小宝\\
%   2013年夏于南京大学南苑
%  \end{flushright}
% \end{preface}
% \end{example}
%
% \myentry{目次}
% \DescribeMacro{\tableofcontents}
% 命令\cs{tableofcontents}用于生成论文目次。此命令必须被用在{\TeX}文档的
% \env{preface}环境之后和\cs{mainmatter}命令之前。
%
% \begin{example}
% \tableofcontents
% \end{example}
%
% \myentry{附表清单}
% \DescribeMacro{\listoftables}
% 命令\cs{listoftables}用于生成论文的附表清单。此命令为可选命令。此命令必须被用在
% {\TeX}文档的\cs{tableofcontents}命令之后和\cs{mainmatter}命令之前。
%
% \begin{example}
% \listoftables
% \end{example}
%
% \myentry{插图清单}
% \DescribeMacro{\listoffigures}
% 命令\cs{listoffigures}用于生成论文插图清单。此命令为可选命令。此命令必须被用在
% {\TeX}文档的\cs{tableofcontents}命令之后和\cs{mainmatter}命令之前。
%
% \begin{example}
% \listoffigures
% \end{example}
%
% \myentry{致谢章节}
% \DescribeEnv{acknowledgement}
% \env{acknowledgement}环境用于生成致谢章节。此环境必须被用在论文的最后一章（通
% 常是“结论”章节）之后以及{\TeX}文档的\cs{appendix}命令和\cs{backmatter}命令之前。
%
% \begin{example}
% \begin{acknowledgement}
% 首先感谢我的母亲韦春花对我的支持。其次感谢我的导师陈近南对我的精心指导和热心帮助。接
% 下来，感谢我的师兄茅十八和风际中，他们阅读了我的论文草稿并提出了很有价值的修改建议。
%
% 最后，感谢我亲爱的老婆们：双儿、苏荃、阿珂、沐剑屏、曾柔、建宁公主、方怡，感谢你们在
% 生活上对我无微不至的关怀和照顾。
% \end{acknowledgement}
% \end{example}
%
% \myentry{简历与科研成果}
% \DescribeEnv{resume}
% \DescribeEnv{authorinfo}
% \DescribeEnv{education}
% \DescribeEnv{publications}
% \DescribeEnv{projects}
% \env{resume}环境用于生成致谢章节。此环境必须被放在{\TeX}文档的\cs{backmatter}
% 命令之后。\env{authorinfo}环境用于生成论文作者简介；\env{education}环境用于生
% 成论文作者教育经历列表；\env{publications}环境用于生成论文作者在攻读学位期间发
% 表的论文的列表；\env{projects}环境用于生成论文作者在攻读学位期间参与的科研课题
% 的列表。
%
% \begin{example}
% \begin{resume}
% % 论文作者身份简介，一句话即可。
% \begin{authorinfo}
% \noindent 韦小宝，男，汉族，1985年11月出生，江苏省扬州人。
% \end{authorinfo}
% % 论文作者教育经历列表，按日期从近到远排列，不包括将要申请的学位。
% \begin{education}
% \item[2007.9 --- 2010.6] 南京大学计算机科学与技术系 \hfill 硕士
% \item[2003.9 --- 2007.6] 南京大学计算机科学与技术系 \hfill 本科
% \end{education}
% % 论文作者在攻读学位期间所发表的文章的列表，按发表日期从近到远排列。
% \begin{publications}
% \item Xiaobao Wei, Jinnan Chen, ``Voting-on-Grid Clustering for Secure
%   Localization in Wireless Sensor Networks,'' in \textsl{Proc. IEEE
%   International Conference on Communications (ICC) 2010}, May. 2010.
% \item Xiaobao Wei, Shiba Mao, Jinnan Chen, ``Protecting Source Location
%   Privacy in Wireless Sensor Networks with Data Aggregation,'' in
%   \textsl{Proc. 6th International Conference on Ubiquitous Intelligence
%   and Computing (UIC) 2009}, Oct. 2009.
% \end{publications}
% % 论文作者在攻读学位期间参与的科研课题的列表，按照日期从近到远排列。
% \begin{projects}
% \item 国家自然科学基金面上项目``无线传感器网络在知识获取过程中的若干安全问题研究''
% （课题年限~2010.1 --- 2012.12），负责位置相关安全问题的研究。
% \item 江苏省知识创新工程重要方向项目下属课题``下一代移动通信安全机制研究''
% （课题年限~2010.1 --- 2010.12），负责LTE/SAE认证相关的安全问题研究。
% \end{projects}
% \end{resume}
% \end{example}
%
% \myentry{生成《学位论文出版授权书》}
% \DescribeMacro{\makelicense}
% 命令\cs{makelicense}用于生成《学位论文出版授权书》。该授权书中的一些字段将根据
% 用户所设置的文档属性自动填写，其他字段需由作者将论文打印出来后用笔手工填写。此命令应该
% 用于{\TeX}文档的\cs{end{document}}命令之前。
% \begin{example}
% \makelicense
% \end{example}
%
% \subsubsection{其它命令和环境}
%
% \myentry{列表环境}
% \DescribeEnv{itemize}
% \DescribeEnv{enumerate}
% \DescribeEnv{description}
% 为了适合中文习惯，{\njuthesis}文档类使用|paralist|宏包重新定义了|itemize|、
% |enumerate|和|description|这三个常用的列表环境。一方面满足了多余空间的清楚，另
% 一方面可以自己指定标签的样式和符号。
%
% 使用的细节请参看|paralist|文档，此处不再赘述。
%
% \subsection{数学环境}
%
% {\njuthesis}宏包预定义了一些数学定理环境，如表\ref{table:math-env}所示。
%
% \begin{table}
% \noindent\centering
% \begin{tabular}{*{7}{l}}
%   \hline
%   axiom     & theorem   & definition & proposition & lemma      & conjecture & notation \\
%   公理       & 定理      & 定义        & 命题         & 引理       & 猜想        & 记号 \\
%   \hline
%   proof     & corollary & example    & exercise    & assumption & remark     & problem \\
%   证明       & 推论      & 例子        & 练习         & 假设        & 评注       & 问题\\
%   \hline
%   postulate &  hypothesis  &  principle  &  algorithm &           &      &  \\
%   公设       &  假说        &   定律       &  算法       &         &        & \\
%   \hline
% \end{tabular}
% \caption{预定义的数学定理环境}\label{table:math-env}
% \end{table}
%
% 例如：
% \begin{example}
% \begin{definition}
% 小世界网络是指其平均路径长度和其节点总数成对数关系的网络。
% \end{definition}
% \end{example}
% 上述代码将产生（自动编号）：
% \begin{flushleft}
% {\heiti 定义~1.1~~~} {小世界网络是指其平均路径长度和其节点总数成对数关系的网络。}
% \end{flushleft}
%
% 列举出来的数学环境毕竟是有限的，如果想用{\heiti 胡说}这样的数学环境，那么很容易定义：
% \begin{example}
% \newtheorem{nonsense}{胡说}[chapter]
% \end{example}
%
% 然后这样使用：
% \begin{example}
% \begin{nonsense}
% 契丹武士要来中原夺武林秘笈。\zhdash 慕容博
% \end{nonsense}
% \end{example}
% 上述代码将产生（自动编号）：
% \begin{flushleft}
% {\heiti 胡说~1.1~~~} {契丹武士要来中原夺武林秘笈。\zhdash 慕容博}
% \end{flushleft}
%
% \subsection{自定义以及其它}
%
% 文档类的配置文件|njuthesis.cfg|中定义了很多固定词汇，一般无须修改。如果有特殊需求，
% 推荐在导言区使用\cs{renewcommand}。当然，导言区里可以直接使用中文。
%
% \section{实现细节}
%
% \subsection{定义选项}
%
% {\njuthesis}宏包的默认选项为|adobefonts|。
%    \begin{macrocode}
%<*cls>
\newif\ifnjut@adobefonts\njut@adobefontstrue
\newif\ifnjut@winfonts\njut@winfontsfalse
\newif\ifnjut@linuxfonts\njut@linuxfontsfalse
\newif\ifnjut@macfonts\njut@macfontsfalse
\newif\ifnjut@backinfo\njut@backinfotrue
\newif\ifnjut@phd\njut@phdfalse
\newif\ifnjut@master\njut@masterfalse
\newif\ifnjut@bachelor\njut@bachelorfalse
\DeclareOption{adobefonts}{\njut@adobefontstrue
  \njut@winfontsfalse
  \njut@linuxfontsfalse
  \njut@macfontsfalse}
\DeclareOption{winfonts}{\njut@winfontstrue
  \njut@adobefontsfalse
  \njut@linuxfontsfalse
  \njut@macfontsfalse}
\DeclareOption{linuxfonts}{\njut@linuxfontstrue
  \njut@adobefontsfalse
  \njut@winfontsfalse
  \njut@macfontsfalse}
\DeclareOption{macfonts}{\njut@macfontstrue
  \njut@adobefontsfalse
  \njut@winfontsfalse
  \njut@linuxfontsfalse}
\DeclareOption{nobackinfo}{\njut@backinfofalse}
\DeclareOption{phd}{\njut@phdtrue
  \njut@masterfalse
  \njut@bachelorfalse}
\DeclareOption{master}{\njut@mastertrue
  \njut@phdfalse
  \njut@bachelorfalse}
\DeclareOption{bachelor}{\njut@bachelortrue
  \njut@phdfalse
  \njut@masterfalse}
%    \end{macrocode}
%
% 把没有定义的选项传递给底层的文档类，在这里为|book|。
%
%    \begin{macrocode}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}
%    \end{macrocode}
%
% 处理选项：
%    \begin{macrocode}
\ProcessOptions\relax
%    \end{macrocode}
%
% \subsection{底层文档类}
%
% 文档基于{\LaTeX}的标准|book|类。正文使用小四字号（对应于12.05pt，这里近似使用12pt），
% 纸张使用A4，双面打印。
%    \begin{macrocode}
\LoadClass[12pt,a4paper,doubleside]{book}
%    \end{macrocode}
%
% \subsection{装载宏包}
%
% 使用本文档类所写的文档需要使用{\XeLaTeX}引擎处理，因此首先要检查引擎是否正确。
%    \begin{macrocode}
\RequirePackage{ifxetex}
\RequireXeTeX
%    \end{macrocode}
%
% 使用|lastpage|宏包来获得最后一页的页码，从而生成“第3页，共20页”这样的页码标签。
%    \begin{macrocode}
\RequirePackage{lastpage}
%    \end{macrocode}
%
% 使用|geometry|宏包定义页面布局，定义段间距。
%    \begin{macrocode}
\RequirePackage{geometry}
%    \end{macrocode}
%
% 使用|titlesec|宏包设置标题格式。
%    \begin{macrocode}
\RequirePackage{titlesec}
%    \end{macrocode}
%
% 使用|graphicx|宏包支持插入图片。
%    \begin{macrocode}
\RequirePackage{graphicx}
%    \end{macrocode}
%
% 如果插入的图片没有指定扩展名，那么依次搜索下面的扩展名所对应的文件
%    \begin{macrocode}
\DeclareGraphicsExtensions{.pdf,.eps,.jpg,.png}
%    \end{macrocode}
%
% |caption2|宏包已经不再推荐使用，改用新的|caption|宏包处理浮动图形和表格的标题
% 样式。
%    \begin{macrocode}
\RequirePackage{caption}
%    \end{macrocode}
%
% |float|宏包为浮动图形和表格环境提供了一个H选项，强制将其放在当前位置。
%    \begin{macrocode}
\RequirePackage{float}
%    \end{macrocode}
%
% |subfigure|宏包已经不再推荐使用，改用新的|subfig|宏包支持插入子图和子表。
%    \begin{macrocode}
\RequirePackage{subfig}
%    \end{macrocode}
%
% 使用|array|宏包扩展表格的列选项。
%    \begin{macrocode}
\RequirePackage{array}
%    \end{macrocode}
%
% 使用|longtable|宏包处理长表格。
%    \begin{macrocode}
\RequirePackage{longtable}
%    \end{macrocode}
%
% |booktabs|宏包可生成三线表，支持\cs{toprule}，\cs{midrule}，\cs{bottomrulle}等命令。
%    \begin{macrocode}
\RequirePackage{booktabs}
%    \end{macrocode}
%
% |multirow|宏包支持在表格中跨行。
%    \begin{macrocode}
\RequirePackage{multirow}
%    \end{macrocode}
%
% |enumitem|宏包支持自定义列表环境。
%    \begin{macrocode}
\RequirePackage{enumitem}
%    \end{macrocode}
%
% |xcolor|宏包提供色彩控制。
%    \begin{macrocode}
\RequirePackage{xcolor}
%    \end{macrocode}
%
% |amsmath|宏包提供数学公式支持。
%    \begin{macrocode}
\RequirePackage{amsmath}
%    \end{macrocode}
%
% |amsthm|宏包支持自定义数学定理环境。
%    \begin{macrocode}
\RequirePackage{amsthm}
%    \end{macrocode}
%
% |amsfonts|宏包、|amssymb|宏包、|bm|宏包和|mathrsfs|宏包提供数学符号和字体支持。
%    \begin{macrocode}
\RequirePackage{amsfonts}
\RequirePackage{amssymb}
\RequirePackage{bm}
\RequirePackage{mathrsfs}
%    \end{macrocode}
%
% |wasysym|宏包提供特殊符号支持。
%    \begin{macrocode}
\RequirePackage{wasysym}
%    \end{macrocode}
%
% |pifont|宏包提供带圈的数字符号。
%    \begin{macrocode}
\RequirePackage{pifont}
%    \end{macrocode}
%
% |txfonts|宏包用自己的typewriter字体替换系统Courier字体，它必须在{\AmSTeX}之后引入。
%    \begin{macrocode}
\RequirePackage{txfonts}
%    \end{macrocode}
%
% |setspace|宏包支持行距控制。它需要在|hyperref|宏包之前加载，避免脚注超链接失效。
%    \begin{macrocode}
\RequirePackage{setspace}
%    \end{macrocode}
%
% |fancyhdr|宏包支持自定义页眉页脚。
%    \begin{macrocode}
\RequirePackage{fancyhdr}
%    \end{macrocode}
%
% |shortvrb|提供了一个\cs{MakeShortVerb}命令，可将某个符号定义为\cs{verb}命令的缩写。
%    \begin{macrocode}
\RequirePackage{shortvrb}
%    \end{macrocode}
%
% 使用|xltxtra|宏包来获取{\XeLaTeX}的符号。
%    \begin{macrocode}
\RequirePackage{xltxtra}
%    \end{macrocode}
%
% 使用|xeCJK|宏包处理中文。宏包选项|CJKnumber|表示调用|CJKnumber|宏包处理中文数
% 字；|CJKchecksingle|表示避免单个汉字单独占一行。|xeCJK|宏包必须放在|amssymb|之后，
% 否则会有冲突。
% \begin{note}
%   因为我们将使用黑体作为粗体，使用楷体作为斜体，因此载入|xeCJK|宏包时不需要开启
%   |BoldFont|选项和|SlantFont|；否则的话，|xeCJK|会自动生成宋体的粗体和斜体，而那会
%   非常难看。
% \end{note}
% \begin{note}
% 由于TeX Live升级到2014版后，直接用|xeCJK|的|CJKnumber|选项会出现bug，我们需单独导入
% |CJKnumb|宏包；但|xeCJK|的|CJKnumber|选项依然需要，否则在Tex Live 2012下编译会报错。
% \end{note}
%    \begin{macrocode}
\RequirePackage[CJKnumber,CJKchecksingle]{xeCJK}
\RequirePackage{CJKnumb}
%    \end{macrocode}
%
% 让{\XeLaTeX}能够处理dash的惯例(使用"--"和"---"获得较长的dash)。
%    \begin{macrocode}
\defaultfontfeatures{Mapping=tex-text}
%    \end{macrocode}
%
% 设置中文标点格式，使用|plain|方案。其他可选方案参见|xeCJK|文档。
%    \begin{macrocode}
\punctstyle{plain}
%    \end{macrocode}
%
% |xeCJKfntef|宏包提供了中文下划线命令\cs{CJKunderline}，它将在制作论文封面时用到。
%    \begin{macrocode}
\RequirePackage{xeCJKfntef}
%    \end{macrocode}
%
% 设置中文下划线颜色为黑色。
%    \begin{macrocode}
\xeCJKsetup{ underline/format = \color{black} }
%    \end{macrocode}
%
% 使用|indentfirst|宏包支持首行缩进。
%    \begin{macrocode}
%\RequirePackage{indentfirst}
%    \end{macrocode}
%
% |url|宏包支持超链接排版，我们为它提供|hyphens|选项，从而使得长链接可在连字符处自动折行。
% 注意|url|宏包必须在|hyperref|宏包之前载入，否则其选项不起作用。
%    \begin{macrocode}
\RequirePackage[hyphens]{url}
%    \end{macrocode}
%
% |hyperref|宏包可根据交叉引用生成超链接，同时生成PDF文档的书签。
%    \begin{macrocode}
\RequirePackage{hyperref}
%    \end{macrocode}
%
% 设置|hyperref|宏包参数。|hyperref|配合{\XeTeX}使用时不能开启Unicode选项。
%    \begin{macrocode}
\hypersetup{%
    unicode=false,
    hyperfootnotes=true,
    hyperindex=true,
    pageanchor=true,
    CJKbookmarks=true,
    bookmarksnumbered=true,
    bookmarksopen=true,
    bookmarksopenlevel=0,
    breaklinks=true,
    colorlinks=false,
    plainpages=false,
    pdfpagelabels,
    pdfborder=0 0 0%
}
%    \end{macrocode}
%
% 设置URL样式，使其与上下文一致。
%    \begin{macrocode}
\urlstyle{same}
%    \end{macrocode}
%
% 美化参考文献排序和引用格式的宏包|natbib|。
%    \begin{macrocode}
\RequirePackage[sort&compress,numbers]{natbib}
%    \end{macrocode}
%
% |hypernat|可以让|hyperref|和|natbib|混合使用，但它需要放在这两者之后。
%    \begin{macrocode}
\RequirePackage{hypernat}
%    \end{macrocode}
%
% |tabularx|宏包支持自动扩展的列宽，但它需要在|hyperref|之后引入才不会导致正文
% 的footnote的超链接失效。
%    \begin{macrocode}
\RequirePackage{tabularx}
%    \end{macrocode}
%
% |makeidx|宏包支持建立索引。
%    \begin{macrocode}
\RequirePackage{makeidx}
%    \end{macrocode}
%
% |glossaries|宏包可用于制作术语表。但该宏包必须在|hyperref|之后载入。
%    \begin{macrocode}
\RequirePackage{glossaries}
%    \end{macrocode}
%
% |ifthen|宏包提供了\cs{ifthenelse}命令，本文档类将使用该命令定义一些其他命令。
%    \begin{macrocode}
\RequirePackage{ifthen}
%    \end{macrocode}
%
% |footmisc|宏包提供了对脚注样式的控制功能。
%    \begin{macrocode}
\RequirePackage[perpage,symbol*]{footmisc}
%</cls>
%    \end{macrocode}
%
% |etoolbox|宏包提供了一些工具宏。
%    \begin{macrocode}
\RequirePackage{etoolbox}
%    \end{macrocode}
%
% \subsection{字符串常量定义}
%
% 定义论文中各章节的中文标题名称字符串常量：
%    \begin{macrocode}
%<*cfg>
\newcommand*{\njut@cap@abstractname}{摘\hspace{2em}要}
\newcommand*{\njut@cap@contentsname}{目\hspace{2em}次}
\newcommand*{\njut@cap@revisionhistory}{修订历史}
\newcommand*{\njut@cap@listfigurename}{插图清单}
\newcommand*{\njut@cap@listtablename}{附表清单}
\newcommand*{\njut@cap@listsymbolname}{符号清单}
\newcommand*{\njut@cap@listequationname}{公式清单}
\newcommand*{\njut@cap@equationname}{公式}
\newcommand*{\njut@cap@bibname}{参考文献}
\newcommand*{\njut@cap@glossaryname}{术\hspace{0.5em}语\hspace{0.5em}表}
\newcommand*{\njut@cap@indexname}{索\hspace{2em}引}
\newcommand*{\njut@cap@figurename}{图}
\newcommand*{\njut@cap@tablename}{表}
\newcommand*{\njut@cap@preface}{前\hspace{2em}言}
\newcommand*{\njut@cap@acknowledgementname}{致\hspace{2em}谢}
\newcommand*{\njut@cap@appendixname}{附录\thechapter}
%    \end{macrocode}
%
% 定义用于重定义\cs{chaptername}命令的常量。若当前所处位置是文档的|mainmatter|部分，ze
% 将其定义为``第XX章''的形式，否则将其定义为空字符串。
%    \begin{macrocode}
\newcommand*{\njut@cap@chaptername}{%
  \if@mainmatter{第\CJKnumber{\thechapter}章}\fi%
}
%    \end{macrocode}
%
% 定义常用数学定理环境的字符串常量：
%    \begin{macrocode}
\newcommand*{\njut@cap@definition}{定义}
\newcommand*{\njut@cap@notation}{记号}
\newcommand*{\njut@cap@theorem}{定理}
\newcommand*{\njut@cap@lemma}{引理}
\newcommand*{\njut@cap@corollary}{推论}
\newcommand*{\njut@cap@proposition}{命题}
\newcommand*{\njut@cap@fact}{事实}
\newcommand*{\njut@cap@assumption}{假设}
\newcommand*{\njut@cap@conjecture}{猜想}
\newcommand*{\njut@cap@hypothesis}{假说}
\newcommand*{\njut@cap@axiom}{公理}
\newcommand*{\njut@cap@postulate}{公设}
\newcommand*{\njut@cap@principle}{定律}
\newcommand*{\njut@cap@problem}{问题}
\newcommand*{\njut@cap@exercise}{练习}
\newcommand*{\njut@cap@example}{例}
\newcommand*{\njut@cap@remark}{评注}
\newcommand*{\njut@cap@proof}{证明}
\newcommand*{\njut@cap@solution}{解}
\newcommand*{\njut@cap@algorithm}{算法}
%    \end{macrocode}
%
% 定义自定义列表环境的字符串常量：
%    \begin{macrocode}
\newcommand*{\njut@cap@case}{情况}
\newcommand*{\njut@cap@subcase}{子情况}
\newcommand*{\njut@cap@step}{步骤}
\newcommand*{\njut@cap@substep}{子步骤}
%    \end{macrocode}
%
% 定义日期中的中文字符：
%    \begin{macrocode}
\newcommand*{\njut@cap@year}{年}
\newcommand*{\njut@cap@month}{月}
\newcommand*{\njut@cap@day}{日}
\newcommand*{\njut@cap@to}{至}
%    \end{macrocode}
%
% 定义学位名称的中英文字符串常量：
%    \begin{macrocode}
\newcommand*{\njut@cap@phd}{博士}
\newcommand*{\njut@cap@master}{硕士}
\newcommand*{\njut@cap@bachelor}{学士}
\newcommand*{\njut@cap@type@phd}{研究生}
\newcommand*{\njut@cap@type@master}{研究生}
\newcommand*{\njut@cap@type@bachelor}{本科生}
\newcommand*{\njut@cap@en@phd}{Doctor of Philosophy}
\newcommand*{\njut@cap@en@master}{Master}
\newcommand*{\njut@cap@en@bachelor}{Bachelor}
%    \end{macrocode}
%
% 定义国家图书馆（NLC）封面的字符串常量：
%    \begin{macrocode}
\newcommand*{\njut@cap@nlc}{国家图书馆封面}
\newcommand*{\njut@cap@nlc@classification}{分类号}
\newcommand*{\njut@cap@nlc@securitylevel}{密级}
\newcommand*{\njut@cap@nlc@udc}{UDC}
\newcommand*{\njut@cap@nlc@title}{%
学\hspace{1em}位\hspace{1em}论\hspace{1em}文%
}
\newcommand*{\njut@cap@nlc@quotetitle}{（题名和副题名）}
\newcommand*{\njut@cap@nlc@author}{（作者姓名）}
\newcommand*{\njut@cap@nlc@supervisor}{%
指导教师姓名、职务、职称、学位、单位名称及地址%
}
\newcommand*{\njut@cap@nlc@degree}{申请学位级别}
\newcommand*{\njut@cap@nlc@major}{专业名称}
\newcommand*{\njut@cap@nlc@submitdate}{论文提交日期}
\newcommand*{\njut@cap@nlc@defenddate}{论文答辩日期}
\newcommand*{\njut@cap@nlc@institute}{学位授予单位和日期}
\newcommand*{\njut@cap@nlc@chairman}{答辩委员会主席：}
\newcommand*{\njut@cap@nlc@reviwer}{评阅人：}
%    \end{macrocode}
%
% 定义标准的文献密级汉字代码：
%    \begin{macrocode}
\newcommand*{\njut@cap@nlc@openlevel}{公开}
\newcommand*{\njut@cap@nlc@controllevel}{限制}
\newcommand*{\njut@cap@nlc@confidentiallevel}{秘密}
\newcommand*{\njut@cap@nlc@clasifiedlevel}{机密}
\newcommand*{\njut@cap@nlc@mostconfidentiallevel}{绝密}
%    \end{macrocode}
%
% 定义南京大学学位论文中文封面的字符串常量：
%    \begin{macrocode}
\newcommand*{\njut@cap@cover}{中文封面}
\newcommand*{\njut@cap@cover@thesis}{{\njut@value@type}毕业论文}
\newcommand*{\njut@cap@cover@apply}{申请{\njut@value@degree}学位}
\newcommand*{\njut@cap@cover@title}{论文题目}
\newcommand*{\njut@cap@cover@author}{作者姓名}
\newcommand*{\njut@cap@cover@supervisor}{指导教师}
\newcommand*{\njut@cap@cover@major}{学科、专业方向}
\newcommand*{\njut@cap@cover@researchfield}{研究方向}
\newcommand*{\njut@cap@cover@department}{院系}
\newcommand*{\njut@cap@cover@institute}{南京大学}
%    \end{macrocode}
%
% 定义南京大学学位论文中文封面背面的字符串常量：
%    \begin{macrocode}
\newcommand*{\njut@cap@coverback@supervisor}{指导教师}
\newcommand*{\njut@cap@coverback@studentnum}{学号}
\newcommand*{\njut@cap@coverback@defenddate}{论文答辩日期}
\newcommand*{\njut@cap@coverback@sign}{\hspace{10em}（签字）}
%    \end{macrocode}
%
% 定义南京大学学位论文英文封面的字符串常量：
%    \begin{macrocode}
\newcommand*{\njut@cap@cover@en@by}{by}
\newcommand*{\njut@cap@cover@en@in}{in}
\newcommand*{\njut@cap@cover@en@supervisor}{Supervised by}
\newcommand*{\njut@cap@cover@en@statement}{%
A dissertation submitted to\\
the graduate school of {\njut@value@en@institute}\\
in partial fulfilment of the requirements for the degree of\\
{\textsc{\njut@value@en@degree}}\\
in\\
{\njut@value@en@major}
}
%    \end{macrocode}
%
% 定义南京大学学位论文中文摘要页的字符串常量：
%    \begin{macrocode}
\newcommand*{\njut@cap@abstract}{中文摘要}
\newcommand*{\njut@cap@abstract@chaptername}%
            {南京大学{\njut@value@type}毕业论文中文摘要首页用纸}
\newcommand*{\njut@cap@abstract@title}{毕业论文题目}
\newcommand*{\njut@cap@abstract@major}{专业}
\newcommand*{\njut@cap@abstract@author}{级{\njut@value@degree}生姓名}
\newcommand*{\njut@cap@abstract@supervisor}{指导教师（姓名、职称）}
\newcommand*{\njut@cap@abstract@abstractname}{摘\hspace{2em}要}
\newcommand*{\njut@cap@abstract@keywordsname}{关键词}
%    \end{macrocode}
%
% 定义南京大学学位论文英文摘要页的字符串常量：
%    \begin{macrocode}
\newcommand*{\njut@cap@abstract@en}{英文摘要}
\newcommand*{\njut@cap@abstract@en@chaptername}%
            {南京大学{\njut@value@type}毕业论文英文摘要首页用纸}
\newcommand*{\njut@cap@abstract@en@title}{THESIS}
\newcommand*{\njut@cap@abstract@en@major}{SPECIALIZATION}
\newcommand*{\njut@cap@abstract@en@author}{POSTGRADUATE}
\newcommand*{\njut@cap@abstract@en@supervisor}{MENTOR}
\newcommand*{\njut@cap@abstract@en@abstractname}{Abstract}
\newcommand*{\njut@cap@abstract@en@keywordsname}{keywords}
%    \end{macrocode}
%
% 定义南京大学学位论文中论文作者简历与科研成果页的字符串常量：
%    \begin{macrocode}
\newcommand*{\njut@cap@resume@chaptername}{简历与科研成果}
\newcommand*{\njut@cap@resume@authorinfo}{基本信息}
\newcommand*{\njut@cap@resume@education}{教育背景}
\newcommand*{\njut@cap@resume@publications}{%
攻读{\njut@value@degree}学位期间完成的学术成果%
}
\newcommand*{\njut@cap@resume@projects}{%
攻读{\njut@value@degree}学位期间参与的科研课题%
}
%    \end{macrocode}
%
% 定义《学位论文出版授权书》中的字符串常量：
%    \begin{macrocode}
\newcommand*{\njut@cap@license@chaptername}{学位论文出版授权书}
\newcommand*{\njut@cap@license@declaration}{%
本人完全同意《中国优秀博硕士学位论文全文数据库出版章程》（以下简称“章程”），%
愿意将本人的学位论文提交“中国学术期刊（光盘版）电子杂志社”在《中国博士学位论%
文全文数据库》、《中国优秀硕士学位论文全文数据库》中全文发表。《中国博士学位论%
文全文数据库》、《中国优秀硕士学位论文全文数据库》可以以电子、网络及其他数字媒%
体形式公开出版，并同意编入《中国知识资源总库》，在《中国博硕士学位论文评价数据%
库》中使用和在互联网上传播，同意按“章程”规定享受相关权益。%
}
\newcommand*{\njut@cap@license@sign}{作者签名：}
\newcommand*{\njut@cap@license@securitylevel}{论文涉密情况：}
\newcommand*{\njut@cap@license@public}{不保密}
\newcommand*{\njut@cap@license@secret}{保密，保密期：}
\newcommand*{\njut@cap@license@title}{论文题名}
\newcommand*{\njut@cap@license@studentnum}{{\njut@value@type}学号}
\newcommand*{\njut@cap@license@department}{所在院系}
\newcommand*{\njut@cap@license@grade}{学位年度}
\newcommand*{\njut@cap@license@category}{论文级别}
\newcommand*{\njut@cap@license@telphone}{作者电话}
\newcommand*{\njut@cap@license@email}{作者Email}
\newcommand*{\njut@cap@license@supervisorname}{第一导师姓名}
\newcommand*{\njut@cap@license@supervisortelphone}{导师电话}
\newcommand*{\njut@cap@license@categoryhint}{（请在方框内画勾）}
\newcommand*{\njut@cap@license@categorymaster}{硕士}
\newcommand*{\njut@cap@license@categoryphd}{博士}
\newcommand*{\njut@cap@license@categorymasterspec}{硕士专业学位}
\newcommand*{\njut@cap@license@categoryphdspec}{博士专业学位}
\newcommand*{\njut@cap@license@remark}{%
注：请将该授权书填写后装订在学位论文最后一页（南大封面）。%
}
%    \end{macrocode}
%
% 定义学位颁发机构的校徽和校名图片文件名：
%    \begin{macrocode}
\newcommand*{\njut@cap@institute@logo}{njulogo.eps}
\newcommand*{\njut@cap@institute@name}{njuname.eps}
%    \end{macrocode}
%
% \subsection{字段默认值定义}
%
% 定义国家图书馆（NLC）封面中要填写的字段的默认值：
%    \begin{macrocode}
\newcommand*{\njut@value@nlc@classification}{(分类)}
\newcommand*{\njut@value@nlc@securitylevel}{\openlevel}
\newcommand*{\njut@value@nlc@udc}{}
\newcommand*{\njut@value@nlc@titlea}{\njut@value@title}
\newcommand*{\njut@value@nlc@titleb}{}
\newcommand*{\njut@value@nlc@titlec}{}
\newcommand*{\njut@value@nlc@supervisorinfo}{%
(导师的职务、职称、学位、单位名称及地址)%
}
\newcommand*{\njut@value@nlc@chairman}{(答辩主席)}
\newcommand*{\njut@value@nlc@reviewera}{(评审人)}
\newcommand*{\njut@value@nlc@reviewerb}{}
\newcommand*{\njut@value@nlc@reviewerc}{}
\newcommand*{\njut@value@nlc@reviewerd}{}
%    \end{macrocode}
%
% 定义南京大学学位论文中文封面中要填写的字段的默认值：
%    \begin{macrocode}
\ifnjut@phd
    \newcommand*{\njut@value@degree}{\njut@cap@phd}
    \newcommand*{\njut@value@type}{\njut@cap@type@phd}
\else
    \ifnjut@master
        \newcommand*{\njut@value@degree}{\njut@cap@master}
        \newcommand*{\njut@value@type}{\njut@cap@type@master}
    \else
       \ifnjut@bachelor
          \newcommand*{\njut@value@degree}{\njut@cap@bachelor}
          \newcommand*{\njut@value@type}{\njut@cap@type@bachelor}
       \else
          \ClassError{njuthesis}{No degree was selected.}{}
       \fi
    \fi
\fi
\newcommand*{\njut@value@title}{(论文标题)}
\newcommand*{\njut@value@titlea}{(论文长标题第一行)}
\newcommand*{\njut@value@titleb}{(论文长标题第二行)}
\newcommand*{\njut@value@author}{(作者姓名)}
\newcommand*{\njut@value@telphone}{(作者电话号码)}
\newcommand*{\njut@value@email}{(作者电子邮件)}
\newcommand*{\njut@value@studentnum}{XXXXXXXX}
\newcommand*{\njut@value@grade}{XXXX}
\newcommand*{\njut@value@supervisor}{(导师姓名和职称)}
\newcommand*{\njut@value@supervisortelphone}{(导师电话号码)}
\newcommand*{\njut@value@major}{(作者专业)}
\newcommand*{\njut@value@researchfield}{(作者研究方向)}
\newcommand*{\njut@value@department}{(作者所属院系)}
\newcommand*{\njut@value@institute}{南京大学}
\newcommand*{\njut@value@submitdate}{xxxx年xx月xx日}
\newcommand*{\njut@value@defenddate}{xxxx年xx月xx日}
\newcommand*{\njut@value@date}{%
{\number\year}年{\number\month}月{\number\day}日%
}
%    \end{macrocode}
%
% 定义南京大学学位论文英文封面中要填写的字段的默认值：
%    \begin{macrocode}
\ifnjut@phd
    \newcommand*{\njut@value@en@degree}{\njut@cap@en@phd}
\else
    \ifnjut@master
        \newcommand*{\njut@value@en@degree}{\njut@cap@en@master}
    \else
       \ifnjut@bachelor
          \newcommand*{\njut@value@en@degree}{\njut@cap@en@bachelor}
       \else
          \ClassError{njuthesis}{No degree was selected.}{}
       \fi
    \fi
\fi
\newcommand*{\njut@value@en@title}{(English Title of Thesis)}
\newcommand*{\njut@value@en@author}{(Author's Name)}
\newcommand*{\njut@value@en@supervisor}{Professor (Supervisor's Name)}
\newcommand*{\njut@value@en@major}{Author's Major}
\newcommand*{\njut@value@en@department}{(Department's Name)}
\newcommand*{\njut@value@en@institute}{Nanjing University}
\newcommand*{\njut@value@en@date}{
\ifcase\month\or
January\or
February\or
March\or
April\or
May\or
June\or
July\or
August\or
September\or
October\or
November\or
December\fi
\number\day, \number\year%
}
%    \end{macrocode}
%
% 定义南京大学学位论文中文摘要页中要填写的字段的默认值：
%    \begin{macrocode}
\newcommand*{\njut@value@abstract@titlea}{\njut@value@title}
\newcommand*{\njut@value@abstract@titleb}{}
\newcommand*{\njut@value@abstract@keywords}{}
%    \end{macrocode}
%
% 定义南京大学学位论文英文摘要页中要填写的字段的默认值：
%    \begin{macrocode}
\newcommand*{\njut@value@abstract@en@titlea}{\njut@value@en@title}
\newcommand*{\njut@value@abstract@en@titleb}{}
\newcommand*{\njut@value@abstract@en@keywords}{}
%    \end{macrocode}
%
% \subsection{格式控制常量定义}
%
% 定义Windows下宋体、黑体、楷书和仿宋体四种中文字体的名称。默认采用微软字体。
%    \begin{macrocode}
\newcommand*{\njut@zhfn@songti@win}{SimSun}
\newcommand*{\njut@zhfn@heiti@win}{SimHei}
\newcommand*{\njut@zhfn@kaishu@win}{KaiTi}
\newcommand*{\njut@zhfn@fangsong@win}{FangSong}
%    \end{macrocode}
%
% 定义Windows下英文字体的名称。默认采用Windows自带的字体。
%    \begin{macrocode}
\newcommand*{\njut@enfn@main@win}{Times New Roman}
\newcommand*{\njut@enfn@sans@win}{Arial}
\newcommand*{\njut@enfn@mono@win}{Courier New}
%    \end{macrocode}
%
% 定义Linux下宋体、黑体、楷书和仿宋体四种中文字体的名称。默认采用文鼎宋体、楷体；
% 文泉黑体；以及华文仿宋体(需要单独安装)。
%    \begin{macrocode}
\newcommand*{\njut@zhfn@songti@linux}{AR PL SungtiL GB}
\newcommand*{\njut@zhfn@heiti@linux}{WenQuanYi Zen Hei Mono}
\newcommand*{\njut@zhfn@kaishu@linux}{AR PL KaitiM GB}
\newcommand*{\njut@zhfn@fangsong@linux}{STFangSong}
%    \end{macrocode}
%
% 定义Linux下英文字体的名称。默认采用的字体若未安装请自行安装。
%    \begin{macrocode}
\newcommand*{\njut@enfn@main@linux}{Times}
\newcommand*{\njut@enfn@sans@linux}{Helvetica}
\newcommand*{\njut@enfn@mono@linux}{Courier}
%    \end{macrocode}
%
% 定义Mac下宋体、黑体、楷书和仿宋体四种中文字体的名称。默认采用华文字体。
%    \begin{macrocode}
\newcommand*{\njut@zhfn@songti@mac}{STSong}
\newcommand*{\njut@zhfn@heiti@mac}{STHeiti}
\newcommand*{\njut@zhfn@kaishu@mac}{STKaiti}
\newcommand*{\njut@zhfn@fangsong@mac}{STFangsong}
%    \end{macrocode}
%
% 定义Mac下英文字体的名称。默认采用Mac自带的字体。
%    \begin{macrocode}
\newcommand*{\njut@enfn@main@mac}{Times}
\newcommand*{\njut@enfn@sans@mac}{Helvetica}
\newcommand*{\njut@enfn@mono@mac}{Courier}
%    \end{macrocode}
%
% 定义Adoble提供的宋体、黑体、楷书和仿宋体四种中文字体的名称。Adoble的宋体、黑体和仿宋体
% 可以在其网站免费下载，地址为
% \begin{center}
%   \url{https://supportdownloads.adobe.com/detail.jsp?ftpID=4883}
% \end{center}
% 但Adobe的楷体只随Adobe Creative Suite软件提供。不过，所有Adobe中文字体都可以在这里
% 下载：
% \begin{center}
%   \url{https://github.com/Haixing-Hu/latex-chinese-fonts}
% \end{center}
%
%    \begin{macrocode}
\newcommand*{\njut@zhfn@songti@adobe}{Adobe Song Std}
\newcommand*{\njut@zhfn@heiti@adobe}{Adobe Heiti Std}
\newcommand*{\njut@zhfn@kaishu@adobe}{Adobe Kaiti Std}
\newcommand*{\njut@zhfn@fangsong@adobe}{Adobe Fangsong Std}
%    \end{macrocode}
%
% 定义英文字体的名称。默认采用Mac自带的字体。
%    \begin{macrocode}
\newcommand*{\njut@enfn@main@adobe}{Times}
\newcommand*{\njut@enfn@sans@adobe}{Helvetica}
\newcommand*{\njut@enfn@mono@adobe}{Courier}
%</cfg>
%    \end{macrocode}
%
% \subsection{载入字符串常量配置}
%
% 在进行其他配置之前先载入预定义的字符串常量配置。
%    \begin{macrocode}
%<*cls>
\input{njuthesis.cfg}
%    \end{macrocode}
%
% \subsection{字体设置}
%
% 首先根据文档选项选择正确的中文字体名称。
%    \begin{macrocode}
\ifnjut@adobefonts
  \newcommand*{\njut@zhfn@songti}{\njut@zhfn@songti@adobe}
  \newcommand*{\njut@zhfn@heiti}{\njut@zhfn@heiti@adobe}
  \newcommand*{\njut@zhfn@kaishu}{\njut@zhfn@kaishu@adobe}
  \newcommand*{\njut@zhfn@fangsong}{\njut@zhfn@fangsong@adobe}
  \newcommand*{\njut@enfn@main}{\njut@enfn@main@adobe}
  \newcommand*{\njut@enfn@sans}{\njut@enfn@sans@adobe}
  \newcommand*{\njut@enfn@mono}{\njut@enfn@mono@adobe}
\else
  \ifnjut@winfonts
      \newcommand*{\njut@zhfn@songti}{\njut@zhfn@songti@win}
      \newcommand*{\njut@zhfn@heiti}{\njut@zhfn@heiti@win}
      \newcommand*{\njut@zhfn@kaishu}{\njut@zhfn@kaishu@win}
      \newcommand*{\njut@zhfn@fangsong}{\njut@zhfn@fangsong@win}
      \newcommand*{\njut@enfn@main}{\njut@enfn@main@win}
      \newcommand*{\njut@enfn@sans}{\njut@enfn@sans@win}
      \newcommand*{\njut@enfn@mono}{\njut@enfn@mono@win}
  \else
    \ifnjut@linuxfonts
      \newcommand*{\njut@zhfn@songti}{\njut@zhfn@songti@linux}
      \newcommand*{\njut@zhfn@heiti}{\njut@zhfn@heiti@linux}
      \newcommand*{\njut@zhfn@kaishu}{\njut@zhfn@kaishu@linux}
      \newcommand*{\njut@zhfn@fangsong}{\njut@zhfn@fangsong@linux}
      \newcommand*{\njut@enfn@main}{\njut@enfn@main@linux}
      \newcommand*{\njut@enfn@sans}{\njut@enfn@sans@linux}
      \newcommand*{\njut@enfn@mono}{\njut@enfn@mono@linux}
    \else
       \ifnjut@macfonts
          \newcommand*{\njut@zhfn@songti}{\njut@zhfn@songti@mac}
          \newcommand*{\njut@zhfn@heiti}{\njut@zhfn@heiti@mac}
          \newcommand*{\njut@zhfn@kaishu}{\njut@zhfn@kaishu@mac}
          \newcommand*{\njut@zhfn@fangsong}{\njut@zhfn@fangsong@mac}
          \newcommand*{\njut@enfn@main}{\njut@enfn@main@mac}
          \newcommand*{\njut@enfn@sans}{\njut@enfn@sans@mac}
          \newcommand*{\njut@enfn@mono}{\njut@enfn@mono@mac}
       \else
         \ClassError{njuthesis}{No fonts was selected.}{}
       \fi
    \fi
  \fi
\fi
%    \end{macrocode}
%
% 接下来定义文档使用的中文字体：
%    \begin{macrocode}
\setCJKfamilyfont{song}{\njut@zhfn@songti}
\setCJKfamilyfont{hei}{\njut@zhfn@heiti}
\setCJKfamilyfont{kai}{\njut@zhfn@kaishu}
\setCJKfamilyfont{fangsong}{\njut@zhfn@fangsong}
\setCJKmainfont[BoldFont={\njut@zhfn@heiti},%
                ItalicFont={\njut@zhfn@kaishu}]%
               {\njut@zhfn@songti}
\setCJKsansfont{\njut@zhfn@heiti}
\setCJKmonofont{\njut@zhfn@fangsong}
%    \end{macrocode}
%
% 定义文档使用的英文字体。
%    \begin{macrocode}
\setmainfont{\njut@enfn@main}
\setsansfont{\njut@enfn@sans}
\setmonofont{\njut@enfn@mono}
%    \end{macrocode}
%
% 定义中文字体选择命令。
%    \begin{macrocode}
\newcommand*{\songti}{\CJKfamily{song}}
\newcommand*{\heiti}{\CJKfamily{hei}}
\newcommand*{\kaishu}{\CJKfamily{kai}}
\newcommand*{\fangsong}{\CJKfamily{fangsong}}
%    \end{macrocode}
%
% \begin{table}
%   \centering
%   \subtable[科学出版社编写的《著译编辑手册》(1994年)中定义的中文字号大小]{
%     \label{table:fontsize:standard}
%     \noindent
%     \begin{tabular}{ccc}
%       \toprule
%       \textbf{字号}  &   \textbf{大小(pt)} & \textbf{大小(mm)}   \\
%       \midrule
%       七号  &    5.25  &    1.845 \\
%       六号  &    7.875 &    2.768 \\
%       小五  &    9     &    3.163 \\
%       五号  &    10.5  &    3.69  \\
%       小四  &    12    &    4.2175 \\
%       四号  &    13.75 &    4.83   \\
%       三号  &    15.75 &    5.53  \\
%       二号  &    21    &    7.38  \\
%       一号  &    27.5  &    9.48  \\
%       小初  &    36    &    12.65 \\
%       初号  &    42    &    14.76 \\
%       \bottomrule
%     \end{tabular}
%   }
%   \qquad
%   \subtable[Microsoft Word中定义的中文字号大小，其中$1$bp=$72.27/72$pt]{
%     \label{table:fontsize:word}
%     \noindent
%     \begin{tabular}{cccc}
%       \toprule
%       \textbf{字号}  & \textbf{大小(bp)} & \textbf{大小(mm)} & \textbf{大小(pt)}   \\
%       \midrule
%       初号  & 42     & 14.82 & 42.1575  \\
%       小初  & 36     & 12.70 & 36.135   \\
%       一号  & 26     & 9.17  & 26.0975  \\
%       小一  & 24     & 8.47  & 24.09    \\
%       二号  & 22     & 7.76  & 22.0825  \\
%       小二  & 18     & 6.35  & 18.0675  \\
%       三号  & 16     & 5.64  & 16.06    \\
%       小三  & 15     & 5.29  & 15.05625 \\
%       四号  & 14     & 4.94  & 14.0525  \\
%       小四  & 12     & 4.23  & 12.045   \\
%       五号  & 10.5   & 3.70  & 10.59375 \\
%       小五  & 9      & 3.18  & 9.03375  \\
%       六号  & 7.5    & 2.56  &            \\
%       小六  & 6.5    & 2.29  &            \\
%       七号  & 5.5    & 1.94  &            \\
%       八号  & 5      & 1.76  &            \\
%       \bottomrule
%     \end{tabular}
%   }
%   \caption{中文字号对应的字体大小}
%   \label{table:fontsize}
% \end{table}
%
% 下面定义中文字号对应的大小，其标准参见表\ref{table:fontsize:standard}和
% 表\ref{table:fontsize:word}。
%    \begin{macrocode}
\newcommand*{\njut@fs@eight}{5.02} % 八号字 5bp
\newcommand*{\njut@fs@eightskip}{6.02}
\newcommand*{\njut@fs@seven}{5.52} % 七号字 5.5bp
\newcommand*{\njut@fs@sevenskip}{6.62}
\newcommand*{\njut@fs@ssix}{6.52} % 小六号 6.5bp
\newcommand*{\njut@fs@ssixskip}{7.83}
\newcommand*{\njut@fs@six}{7.53} % 六号字 7.5bp
\newcommand*{\njut@fs@sixskip}{9.03}
\newcommand*{\njut@fs@sfive}{9.03} % 小五号 9bp
\newcommand*{\njut@fs@sfiveskip}{10.84}
\newcommand*{\njut@fs@five}{10.54} % 五号 10bp
\newcommand*{\njut@fs@fiveskip}{12.65}
\newcommand*{\njut@fs@sfour}{12.05} % 小四号 12bp
\newcommand*{\njut@fs@sfourskip}{14.45}
\newcommand*{\njut@fs@four}{14.05} % 四号字 14bp
\newcommand*{\njut@fs@fourskip}{16.86}
\newcommand*{\njut@fs@sthree}{15.06} % 小三号 15bp
\newcommand*{\njut@fs@sthreeskip}{18.07}
\newcommand*{\njut@fs@three}{16.06} % 三号字 16bp
\newcommand*{\njut@fs@threeskip}{19.27}
\newcommand*{\njut@fs@stwo}{18.07} % 小二号 18bp
\newcommand*{\njut@fs@stwoskip}{21.68}
\newcommand*{\njut@fs@two}{22.08} % 二号字 22bp
\newcommand*{\njut@fs@twoskip}{26.50}
\newcommand*{\njut@fs@sone}{24.09} % 小一号 24bp
\newcommand*{\njut@fs@soneskip}{28.91}
\newcommand*{\njut@fs@one}{26.10} % 一号字 26bp
\newcommand*{\njut@fs@oneskip}{31.32}
\newcommand*{\njut@fs@szero}{36.14} % 小初号 36bp
\newcommand*{\njut@fs@szeroskip}{43.36}
\newcommand*{\njut@fs@zero}{42.16} % 初号字 42bp
\newcommand*{\njut@fs@zeroskip}{50.59}
%    \end{macrocode}
%
% 声明不同字号下的数学字体大小。
%    \begin{macrocode}
\DeclareMathSizes{\njut@fs@eight}
                 {\njut@fs@eight}
                 {5}
                 {5}
\DeclareMathSizes{\njut@fs@seven}
                 {\njut@fs@seven}
                 {5}
                 {5}
\DeclareMathSizes{\njut@fs@ssix}
                 {\njut@fs@ssix}
                 {5}
                 {5}
\DeclareMathSizes{\njut@fs@six}
                 {\njut@fs@six}
                 {5}
                 {5}
\DeclareMathSizes{\njut@fs@sfive}
                 {\njut@fs@sfive}
                 {6}
                 {5}
\DeclareMathSizes{\njut@fs@five}
                 {\njut@fs@five}
                 {7}
                 {5}
\DeclareMathSizes{\njut@fs@sfour}
                 {\njut@fs@sfour}
                 {8}
                 {6}
\DeclareMathSizes{\njut@fs@four}
                 {\njut@fs@four}
                 {\njut@fs@five}
                 {\njut@fs@six}
\DeclareMathSizes{\njut@fs@sthree}
                 {\njut@fs@sthree}
                 {\njut@fs@sfour}
                 {\njut@fs@sfive}
\DeclareMathSizes{\njut@fs@three}
                 {\njut@fs@three}
                 {\njut@fs@four}
                 {\njut@fs@five}
\DeclareMathSizes{\njut@fs@stwo}
                 {\njut@fs@stwo}
                 {\njut@fs@sthree}
                 {\njut@fs@sfour}
\DeclareMathSizes{\njut@fs@two}
                 {\njut@fs@two}
                 {\njut@fs@three}
                 {\njut@fs@four}
\DeclareMathSizes{\njut@fs@sone}
                 {\njut@fs@sone}
                 {\njut@fs@stwo}
                 {\njut@fs@sthree}
\DeclareMathSizes{\njut@fs@one}
                 {\njut@fs@one}
                 {\njut@fs@two}
                 {\njut@fs@three}
\DeclareMathSizes{\njut@fs@szero}
                 {\njut@fs@szero}
                 {\njut@fs@sone}
                 {\njut@fs@stwo}
\DeclareMathSizes{\njut@fs@zero}
                 {\njut@fs@zero}
                 {\njut@fs@one}
                 {\njut@fs@two}
%    \end{macrocode}
%
% 定义字号选择命令。字号前面加负号表示采用对应的小体字号，例如|\zihao{-3}|表示小
% 三号。
% \begin{note}
% 为了让|\zihao{-0}|能正确表示小初号，在判断参数正负的时候把参数后面再接一个字符`1'，从
% 而将``-0''变为``-01''，而``-01''转换为数字为$-1$，故可正确判断其是否小于零。
% \end{note}
%    \begin{macrocode}
\def\njut@zihao{}
\DeclareRobustCommand*{\zihao}[1]{%
  \def\njut@zihao{#1}%
  \ifnum #11<0%
    \@tempcnta=-#1
    \ifcase\@tempcnta%
        \fontsize\njut@fs@szero\njut@fs@szeroskip%
    \or \fontsize\njut@fs@sone\njut@fs@soneskip%
    \or \fontsize\njut@fs@stwo\njut@fs@stwoskip%
    \or \fontsize\njut@fs@sthree\njut@fs@sthreeskip%
    \or \fontsize\njut@fs@sfour\njut@fs@sfourskip%
    \or \fontsize\njut@fs@sfive\njut@fs@sfiveskip%
    \or \fontsize\njut@fs@ssix\njut@fs@ssixskip%
    \else \ClassError{njuthesis}{%
            Undefined Chinese font size in command \protect\zihao}{%
            The old font size is used if you continue.}%
    \fi%
  \else%
    \@tempcnta=#1
    \ifcase\@tempcnta%
        \fontsize\njut@fs@zero\njut@fs@zeroskip%
    \or \fontsize\njut@fs@one\njut@fs@oneskip%
    \or \fontsize\njut@fs@two\njut@fs@twoskip%
    \or \fontsize\njut@fs@three\njut@fs@threeskip%
    \or \fontsize\njut@fs@four\njut@fs@fourskip%
    \or \fontsize\njut@fs@five\njut@fs@fiveskip%
    \or \fontsize\njut@fs@six\njut@fs@sixskip%
    \or \fontsize\njut@fs@seven\njut@fs@sevenskip%
    \or \fontsize\njut@fs@eight\njut@fs@eightskip%
    \else \ClassError{njuthesis}{%
            Undefined Chinese font size in command \protect\zihao}{%
            The old font size is used if you continue.}%
    \fi%
  \fi%
  \selectfont\ignorespaces}
%    \end{macrocode}
%
% 修改常用字体大小选择命令。
%
%    \begin{macrocode}
\renewcommand{\tiny}{% 小六号 6.5bp
  \@setfontsize\tiny{\njut@fs@ssix}{\njut@fs@ssixskip}}
\renewcommand{\scriptsize}{% 六号字 7.5bp
  \@setfontsize\scriptsize{\njut@fs@six}{\njut@fs@sixskip}}
\renewcommand{\footnotesize}{% 小五号 9bp
  \@setfontsize\footnotesize{\njut@fs@sfive}{\njut@fs@sfiveskip}%
  \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
  \abovedisplayshortskip \z@ \@plus\p@
  \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
  \def\@listi{\leftmargin\leftmargini
    \topsep 3\p@ \@plus\p@ \@minus\p@
    \parsep 2\p@ \@plus\p@ \@minus\p@
    \itemsep \parsep}%
  \belowdisplayskip \abovedisplayskip}
\renewcommand{\small}{% 五号 10bp
  \@setfontsize\small{\njut@fs@five}{\njut@fs@fiveskip}%
  \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
  \abovedisplayshortskip \z@ \@plus2\p@
  \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
  \def\@listi{\leftmargin\leftmargini
    \topsep 4\p@ \@plus2\p@ \@minus2\p@
    \parsep 2\p@ \@plus\p@ \@minus\p@
    \itemsep \parsep}%
  \belowdisplayskip \abovedisplayskip}
\renewcommand{\normalsize}{% 小四号 12bp
  \@setfontsize\normalsize{\njut@fs@sfour}{\njut@fs@sfourskip}%
  \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
  \abovedisplayshortskip \z@ \@plus3\p@
  \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
  \belowdisplayskip \abovedisplayskip
  \let\@listi\@listI}
\renewcommand{\large}{% 小三号 15bp
  \@setfontsize\large{\njut@fs@sthree}{\njut@fs@sthreeskip}}
\renewcommand{\Large}{% 小二号 18bp
  \@setfontsize\Large{\njut@fs@stwo}{\njut@fs@stwoskip}}
\renewcommand{\LARGE}{% 小一号 24bp
  \@setfontsize\LARGE{\njut@fs@sone}{\njut@fs@soneskip}}
\renewcommand{\huge}{% 一号 26bp
  \@setfontsize\huge{\njut@fs@one}{\njut@fs@oneskip}}
\renewcommand{\Huge}{% 小初号 36bp
  \@setfontsize\Huge{\njut@fs@szero}{\njut@fs@szeroskip}}
%    \end{macrocode}
%
% 定义中文字距修改命令，直接修改\cs{CJKglue}即可。
%    \begin{macrocode}
\newcommand*{\ziju}[1]{\renewcommand*{\CJKglue}{\hskip {#1}}}
%    \end{macrocode}
%
% 修改\cs{textsc}命令，使其可在中文编码下正常工作。
%    \begin{macrocode}
\renewcommand{\textsc}[1]{{\usefont{OT1}{cmr}{m}{sc}{#1}}}
%    \end{macrocode}
%
% \subsection{数学公式和定理}
%
% 按照\std{CY/T 35-2001}规范的要求，重定义公式、图、表的编号格式。例如：
% \begin{itemize}
% \item 图\dashnumber{1}{2}
% \item 表\dashnumber{2}{3}
% \item 附注 1)
% \item 文献[4]
% \item 式(\dashnumber{6}{3})
% \end{itemize}
% 子图和子表的应用序号外加小括号，例如
% \begin{itemize}
% \item 图\dashnumber{1}{2}(a)
% \item 表\dashnumber{2}{3}(b)
% \end{itemize}
%    \begin{macrocode}
\newcommand{\dashnumber}[2]%
  {{#1}\kern.07em\rule[.5ex]{.4em}{.15ex}\kern.07em{#2}}
\renewcommand*{\thefigure}{\dashnumber{\thechapter}{\arabic{figure}}}
\renewcommand*{\thetable}{\dashnumber{\thechapter}{\arabic{table}}}
\renewcommand*{\theequation}{\dashnumber{\thechapter}{\arabic{equation}}}
\renewcommand*{\thesubfigure}{(\alph{subfigure})}
\renewcommand*{\thesubtable}{(\alph{subtable})}
%    \end{macrocode}
%
% 定义常用的数学定理环境及其样式。
%    \begin{macrocode}
\newtheoremstyle{plain}% name
                {1em}%      Space above, empty = `usual value'
                {1em}%      Space below
                {\normalfont}% Body font
                {}%         Indent amount
                {\normalfont\bfseries}% Thm head font
                {}%         Punctuation after thm head
                {1em}%      Space after thm head: \newline = linebreak
                {}%         Thm head spec
\newtheorem{definition}{\njut@cap@definition}[chapter]
\newtheorem{notation}[definition]{\njut@cap@notation}
\newtheorem{theorem}{\njut@cap@theorem}[chapter]
\newtheorem{lemma}[theorem]{\njut@cap@lemma}
\newtheorem{corollary}[theorem]{\njut@cap@corollary}
\newtheorem{proposition}[theorem]{\njut@cap@proposition}
\newtheorem{fact}[theorem]{\njut@cap@fact}
\newtheorem{assumption}[theorem]{\njut@cap@assumption}
\newtheorem{conjecture}[theorem]{\njut@cap@conjecture}
\newtheorem{hypothesis}{\njut@cap@hypothesis}[chapter]
\newtheorem{axiom}{\njut@cap@axiom}[chapter]
\newtheorem{postulate}{\njut@cap@postulate}[chapter]
\newtheorem{principle}{\njut@cap@principle}[chapter]
\newtheorem{problem}{\njut@cap@problem}[chapter]
\newtheorem{exercise}{\njut@cap@exercise}[chapter]
\newtheorem{example}{\njut@cap@example}[chapter]
\newtheorem{remark}{\njut@cap@remark}[chapter]

\renewenvironment{proof}[1][\njut@cap@proof]{\par
  \pushQED{\qed}%
  \normalfont \topsep6\p@\@plus6\p@\relax
  \trivlist
  \item[\hskip\labelsep\textbf{#1}\@addpunct{:}]\ignorespaces
}{\popQED\endtrivlist\@endpefalse}

\newenvironment{solution}[1][\njut@cap@solution]{\par
  \normalfont \topsep6\p@\@plus6\p@\relax
  \trivlist
  \item[\hskip\labelsep\textbf{#1}\@addpunct{:}]\ignorespaces
}{\endtrivlist\@endpefalse}

\newtheorem{algorithm}{\njut@cap@algorithm}[chapter]
%    \end{macrocode}
%
% 修改上面定义的各定理环境的编号样式：
%    \begin{macrocode}
\renewcommand*{\thedefinition}{\dashnumber{\thechapter}{\arabic{definition}}}
\renewcommand*{\thetheorem}{\dashnumber{\thechapter}{\arabic{theorem}}}
\renewcommand*{\theaxiom}{\dashnumber{\thechapter}{\arabic{axiom}}}
\renewcommand*{\theproblem}{\dashnumber{\thechapter}{\arabic{problem}}}
\renewcommand*{\theexercise}{\dashnumber{\thechapter}{\arabic{exercise}}}
\renewcommand*{\theexample}{\dashnumber{\thechapter}{\arabic{example}}}
\renewcommand*{\theremark}{\dashnumber{\thechapter}{\arabic{remark}}}
%    \end{macrocode}
%
% \subsection{设置浮动环境格式}
%
% 默认情况下，{\LaTeX}要求每页的文字至少占据$20\%$，否则该页就只单独放置一个浮动环境。而
% 这通常不是我们想要的。我们将这个要求降低到$5\%$。
%    \begin{macrocode}
\renewcommand*{\textfraction}{0.05}
%    \end{macrocode}
% 有时如果多个浮动环境连续放在一起，{\LaTeX}会将它们分在几个不同页，即使它们可在同一页放
% 得下。我们可以通过修改\cs{topfraction}和\cs{bottomfraction}分别设置顶端和底端的浮动
% 环境的最大比例。
%    \begin{macrocode}
\renewcommand*{\topfraction}{0.9}
\renewcommand*{\bottomfraction}{0.8}
%    \end{macrocode}
% 有时{\LaTeX}会把一个浮动环境单独放在一页，我们要求这个环境至少要占据$85\%$才能单独放在
% 一页。
% \begin{note}
% \cs{floatpagefraction}的数值必须小于\cs{topfraction}。
% \end{note}
%    \begin{macrocode}
\renewcommand*{\floatpagefraction}{0.85}
%    \end{macrocode}
%
% \subsection{中文标题名称}
%
% 设置常见的中文标题名称。
%    \begin{macrocode}
\newcommand*{\abstractname}{\njut@cap@abstractname}
\renewcommand*{\contentsname}{\njut@cap@contentsname}
\renewcommand*{\listfigurename}{\njut@cap@listfigurename}
\renewcommand*{\listtablename}{\njut@cap@listtablename}
\newcommand*{\listsymbolname}{\njut@cap@listsymbolname}
\newcommand*{\listequationname}{\njut@cap@listequationname}
\renewcommand*{\glossaryname}{\njut@cap@glossaryname}
\renewcommand*{\indexname}{\njut@cap@indexname}
\newcommand*{\equationname}{\njut@cap@equationname}
\renewcommand*{\bibname}{\njut@cap@bibname}
\renewcommand*{\figurename}{\njut@cap@figurename}
\renewcommand*{\tablename}{\njut@cap@tablename}
\renewcommand*{\chaptername}{\njut@cap@chaptername}
\renewcommand*{\appendixname}{\njut@cap@appendixname}
%    \end{macrocode}
%
% \subsection{中文标题格式}
%
% 设置章节格式如下：
% \begin{description}
% \item[零级节标题] 命令为\cs{chapter}，格式为一号黑体，居中排列，段前空4ex，段后空3ex；
% \item[一级节标题] 命令为\cs{section}，格式为小二号黑体，左排列，段前空3.5ex，段后空2.3ex；
% \item[二级节标题] 命令为\cs{subsection}，格式为三号黑体，左排列，段前空3.0ex，段后空1.5ex；
% \item[三级节标题] 命令为\cs{subsubsection}，格式为小三号黑体，左排列，段前空2.5ex，段后空1.5ex；
% \item[四级节标题] 命令为\cs{paragraph}，格式为四号黑体，左排列，段前空2.0ex，段后空1ex；
% \item[五级节标题] 命令为\cs{subparagraph}，格式为小四号黑体，左排列，段前空1.5ex，段后空1ex；
% \end{description}
%
% 使用|titlesec|宏包提供的\cs{titleformat}和\cs{titlespacing}命令可以方便地设置标题
% 的样式：
%    \begin{macrocode}
\titleformat{\chapter}[hang]
            {\centering\zihao{1}\bfseries}
            {\chaptertitlename}{1em}{}
\titlespacing{\chapter}
             {0pt}
             {*4}
             {*3}
\titleformat{\section}[hang]
            {\zihao{-2}\bfseries}
            {\thesection}{1em}{}
\titlespacing{\section}
             {0pt}
             {*3.5}
             {*2.3}
\titleformat{\subsection}[hang]
            {\zihao{3}\bfseries}
            {\thesubsection}{1em}{}
\titlespacing{\subsection}
             {0pt}
             {*3}
             {*1.5}
\titleformat{\subsubsection}[hang]
            {\zihao{-3}\bfseries}
            {\thesubsubsection}{1em}{}
\titlespacing{\subsubsection}
             {0pt}
             {*2.5}
             {*1.5}
\titleformat{\paragraph}[hang]
            {\zihao{4}\bfseries}
            {}{0em}{}
\titlespacing{\paragraph}
             {0pt}
             {*2}
             {*1}
\titleformat{\subparagraph}[hang]
            {\zihao{-4}\bfseries}
            {}{0em}{}
\titlespacing{\subparagraph}
             {0pt}
             {*1.5}
             {*1}
%    \end{macrocode}
%
% 设置章节标题编号最多到第4层（即\cs{subsubsection}），超过第四层的章节不再自动编号。
%    \begin{macrocode}
\setcounter{secnumdepth}{4}
%    \end{macrocode}
%
% 修改章节编号的样式：
%    \begin{macrocode}
\renewcommand{\thechapter}{\arabic{chapter}}
\renewcommand{\thesection}{\thechapter\thinspace.\thinspace\arabic{section}}
\renewcommand{\thesubsection}{\thesection\thinspace.\thinspace\arabic{subsection}}
\renewcommand{\thesubsubsection}{\thesubsection\thinspace.\thinspace\arabic{subsubsection}}
%    \end{macrocode}
%
% \subsection{浮动环境}
%
% 设置浮动环境标题的字体大小。根据学位论文格式要求，插图和表格标题字体需要比正文字体略小。
%    \begin{macrocode}
\captionsetup{font=small}
%    \end{macrocode}
%
% 根据学位论文格式要求，表格的标题必须位于表格上方，插图的标题必须位于插图下方。
%    \begin{macrocode}
\captionsetup[table]{position=above}
\captionsetup[figure]{position=below}
\floatstyle{plaintop}
\restylefloat{table}
%    \end{macrocode}
%
% \subsection{页幅设置}
%
% 正文统一用小四号字，间距为固定值20pt。\cs{linestrech}的值为$1$时为单倍行距， $1.2$时是
% 一倍半行距， 而为$1.6$时是双倍行距。其实不同尺寸的字体行间距都不相同，而是成比例关系。这
% 个20pt是对正文主要字体来说的。
%
% 在{\TeX}中基本的行间距是\cs{baselineskip}, 对于12pt的字体，这个值等于14.5pt,
% 而真正的行间距是\cs{baselineskip}$\times$\cs{baselinestretch}，
% \cs{baselinestretch}默认为$1$, 但我们可以重新设置它的值，如
% |\renewcommand{\baselinestretch}{1.38}|就得到真正的行间距为14.5pt*1.38≈20pt。
% 而这样定义之后，对不同尺寸的字体都会按同样的比例因子1.38放大行间距，使得全文排
% 版能协调一致。
%    \begin{macrocode}
\renewcommand*{\baselinestretch}{1.38}
%    \end{macrocode}
%
% 修改|tabular|环境，设置表格中的行间距为正文行间距。
%    \begin{macrocode}
\let\njut@oldtabular\tabular
\let\njut@endoldtabular\endtabular
\renewenvironment{tabular}%
{\bgroup%
\renewcommand{\arraystretch}{1.38}%
\njut@oldtabular}%
{\njut@endoldtabular\egroup}
%    \end{macrocode}
%
% 文章用A4纸标准大小的白纸打印，页眉：2.6cm，页脚：2.4cm，页边距上下：3.5cm，左
% 右：3.2cm。
%    \begin{macrocode}
\geometry{headheight=2.6cm,headsep=3mm,footskip=13mm}
\geometry{top=3.5cm,bottom=3.5cm,left=3.2cm,right=3.2cm}
%    \end{macrocode}
%
% 设置每一段的首行缩进两个汉字。
% \begin{note}
% 直接将|parindent|设置为|2em|并不能正确地设置段首缩进为恰好两个中文字符。因此我们采用下面的
% 网页提供办法：\\
% \url{https://github.com/ElegantLaTeX/ElegantLaTeX/blob/master/CJKindent.md}
% \end{note}
%
% 首先，我们需要计算出当前字符的宽度：
%    \begin{macrocode}
\def\njut@CJK@charwidth{\hskip \f@size \p@}
%    \end{macrocode}
% 接下来，我们需要考虑到字符间距，计算出当前相邻两字符中心的距离：
%    \begin{macrocode}
\newdimen\njut@CJK@chardimen
\settowidth\njut@CJK@chardimen{\njut@CJK@charwidth\CJKglue}
%    \end{macrocode}
% 最后，我们设置段首缩进长度：
%    \begin{macrocode}
\newcommand{\njut@CJK@setfontspace}{%
\settowidth\njut@CJK@chardimen{\njut@CJK@charwidth\CJKglue}%
\ifdim\parindent=0pt\relax\else\parindent2\njut@CJK@chardimen\fi%
}
\renewcommand*{\indent}{\njut@CJK@setfontspace\parindent2\njut@CJK@chardimen}
\AtBeginDocument{\indent}
%    \end{macrocode}
%
% \subsection{页眉页脚}
%
% 我们使用|fancyhdr|宏包来设置页眉页脚。|fancyhdr|宏包提供了一个|fancy|页面风格，
% 在该风格下，章节的起始页（即包含“第XX章”标题的页面）的页眉页脚将使用|plain|风
% 格，而章节的后继页面的页眉页脚将使用|fancy|风格的默认定义或用户通过
% \cs{fancyhead}或\cs{fancyfoot}命令定义的样式。
%
% 首先，我们需要修改|plain|风格的页眉页脚，将其页脚默认的页码去掉。
%    \begin{macrocode}
\fancypagestyle{plain}{%
   \fancyhead{}                       % get rid of headers and footers
   \renewcommand{\headrulewidth}{0pt} % and the header line
   \renewcommand{\footrulewidth}{0pt} % and the footer line
}
%    \end{macrocode}
%
% 接下来我们按照如下规则修改|fancy|风格的页眉页脚设置，注意学位论文始终是双面打印的：
% \begin{itemize}
%    \item 令偶数页的页眉如下：
%      \begin{itemize}
%      \item 左上角显示当前页页码
%      \item 右上角显示当前章（chapter）的编号和标题；
%      \item 若当前不为于|mainmatter|中，则右上角只显示当前章的标题。
%      \end{itemize}
%    \item 令奇数页的页眉如下：
%      \begin{itemize}
%      \item 左上角显示当前节（section）的编号和标题
%      \item 右上角显示当前页页码；
%      \item 若当前页面尚未开始此章的第一节，即节编号和节标题为空；则左上角显示当前
%      章（chapter）的编号和标题；若当前不为于|mainmatter|中，则左上角只显示当前章的
%      标题。
%      \end{itemize}
%    \item 无论奇偶页，页眉下都有一条分割线；
%    \item 无论奇偶页，页脚都为空，页脚上都无分割线。
% \end{itemize}
%
% 设置|fancy|风格下的页脚，令页脚为空；令页脚分割线宽度为$0$：
%    \begin{macrocode}
\fancyfoot{}
\renewcommand{\footrulewidth}{0pt}
%    \end{macrocode}
%
% 设置|fancy|风格下的页眉，令偶数页左上角和奇数页右上角显示当前页码，令页眉的分
% 割线宽度为$1$：
%    \begin{macrocode}
\fancyhead[LE,RO]{\thepage}
\renewcommand{\headrulewidth}{1pt}
%    \end{macrocode}
%
% 设置|fancy|风格的页眉，令偶数页右上角和奇数页左上角分别显示当前章信息和当前节
% 信息；但若当前页面尚未开始本章的第一节（即\cs{rightmark}为空），则奇数页左上角也
% 显示当前章信息（即\cs{leftmark}）。
%    \begin{macrocode}
\fancyhead[RE]{\leftmark}
\fancyhead[LO]{%
 \ifthenelse{\equal{\rightmark}{}}% if \rightmark is empty
            {\leftmark}%
            {\rightmark}%
}
%    \end{macrocode}
%
% 设置全局使用|fancy|风格。
%    \begin{macrocode}
\pagestyle{fancy}
%    \end{macrocode}
%
% 重新定义|chaptermark|，让其显示当前章信息和当前节信息。注意下面的重定义必须放
% 在第一次调用|\pagestyle{fancy}|之后，因为第一次调用该命令会设置\cs{chaptermark}。
%    \begin{macrocode}
\renewcommand{\chaptermark}[1]{\markboth{%
 \bfseries\if@mainmatter\chaptertitlename\hspace{1em}\fi{#1}%
}{}}
%    \end{macrocode}
%
% 重新定义|sectionmark|，让其显示当前节信息。注意下面的重定义必须放在第一次调用
% |\pagestyle{fancy}|之后，因为第一次调用该命令会设置\cs{sectionmark}。
%    \begin{macrocode}
\renewcommand{\sectionmark}[1]{\markright{%
 \bfseries\if@mainmatter\thesection\hspace{1em}\fi{#1}%
}}
%    \end{macrocode}
%
% 另一个麻烦的问题是：默认的|fancy|风格会在每一章最后的空白页（由于是双面打印）
% 也加上页眉页脚，但我们通常不希望如此。解决方法是修改{\LaTeX}内部的\cs{cleardoublepage}
% 命令的定义如下：
%    \begin{macrocode}
\def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
  \hbox{}\thispagestyle{empty}\newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi}
%    \end{macrocode}
%
% \subsection{列表环境}
%
% {\LaTeX}默认的列表：|enumerate|，|itemize|，和|description|都不符合中文习惯。
% 符合中文习惯的列表需要满足：
% \begin{enumerate}
% \item 列表标签要与正文的左边界对齐；
% \item 列表文本左侧要和左边界对齐；
% \item 列表项的间距应当等于正文中的段落间距，通常为$0$；
% \item 列表文本的右侧与正文的右边界对齐。
% \end{enumerate}
% 因此需要重新设置默认的列表的格式。
%    \begin{macrocode}
\setlist{%
  topsep=0.3em,             % 列表顶端的垂直空白
  partopsep=0pt,            % 列表环境前面紧接着一个空白行时其顶端的额外垂直空白
  itemsep=0ex plus 0.1ex,   % 列表项之间的额外垂直空白
  parsep=0pt,               % 列表项内的段落之间的垂直空白
  leftmargin=1.5em,         % 环境的左边界和列表之间的水平距离
  rightmargin=0em,          % 环境的右边界和列表之间的水平距离
  labelsep=0.5em,           % 包含标签的盒子与列表项的第一行文本之间的间隔
  labelwidth=2em,           % 包含标签的盒子的正常宽度；若实际宽度更宽，则使用实际宽度。
}
%    \end{macrocode}
%
% 设置无序列表的标签符号。
%    \begin{macrocode}
\setlist[itemize,1]{label=$\medbullet$}
\setlist[itemize,2]{label=$\blacksquare$}
\setlist[itemize,3]{label=$\Diamondblack$}
%    \end{macrocode}
%
% \subsection{引用}
%
% 默认的引用环境|quote|和|quotation|都不符合中文习惯，我们将其重新定义如下:
%    \begin{macrocode}
\renewenvironment{quote}%
                 {\list{}{\leftmargin=4em\rightmargin=4em}\item[]}%
                 {\endlist}
\renewenvironment{quotation}%
                 {\list{}{\leftmargin=4em\rightmargin=4em}\item[]}%
                 {\endlist}
%    \end{macrocode}
%
% \subsection{目次}
%
% 前置部分的封面在后面详细介绍，首先看目次。其具体要求为：目次页由论文的章、节、条、项、
% 附录等的序号、名称和页码组成，另页排在序之后。目次页标注学位论文的前三级目录。
% 标题统一用“目次”，黑体3字号字居中，段前、段后间距为1行; 各章（一级目录）名称用
% 黑体5号字，段前间距为0.5行，段后间距为0行; 其它（二、三级目录）用宋体5号字，
% 段前、段后间距为0行。
%
% \begin{macro}{\nchapter}
% 用于产生没有编号但在目次中列出的章。
%    \begin{macrocode}
\newcommand\nchapter[1]{%
  \if@mainmatter%
    \@mainmatterfalse%
    \chapter{#1}%
    \@mainmattertrue%
  \else
    \chapter{#1}%
  \fi
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@dottedtocline}
% 改变缺省的目次中的点线为中文习惯。
%    \begin{macrocode}
\def\@dottedtocline#1#2#3#4#5{%
  \ifnum #1>\c@tocdepth \else
    \vskip \z@ \@plus.2\p@
    {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
     \parindent #2\relax\@afterindenttrue
     \interlinepenalty\@M
     \leavevmode
     \@tempdima #3\relax
     \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
     {#4}\nobreak
     \leaders\hbox{$\m@th\mkern 1.5mu\cdot\mkern 1.5mu$}\hfill
     \nobreak
     \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}%
     \par}%
  \fi}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\l@part}
% 改变缺省的目次中的点线为中文习惯。
%    \begin{macrocode}
\renewcommand*{\l@part}[2]{%
  \ifnum \c@tocdepth >-2\relax
    \addpenalty{-\@highpenalty}%
    \addvspace{2.25em \@plus\p@}%
    \setlength\@tempdima{3em}%
    \begingroup
      \parindent \z@ \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      {\leavevmode
       \large \bfseries #1
       \leaders\hbox{$\m@th\mkern 1.5mu\cdot\mkern 1.5mu$}
       \hfil \hb@xt@\@pnumwidth{\hss #2}}\par
       \nobreak
         \global\@nobreaktrue
         \everypar{\global\@nobreakfalse\everypar{}}%
    \endgroup
  \fi}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\l@chapter}
% 改变缺省的目次中的点线为中文习惯。
%    \begin{macrocode}
\renewcommand*{\l@chapter}[2]{%
  \ifnum \c@tocdepth >\m@ne
    \addpenalty{-\@highpenalty}%
    \vskip 1.0em \@plus\p@
    \setlength\@tempdima{1.5em}%
    \begingroup
      \parindent \z@ \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      \leavevmode \bfseries
      \advance\leftskip\@tempdima
      \hskip -\leftskip
      #1\nobreak
      \leaders\hbox{$\m@th\mkern 1.5mu\cdot\mkern 1.5mu$}
      \hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
      \penalty\@highpenalty
    \endgroup
  \fi}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\tableofcontents}
% 修改\cs{tableofcontents}命令用于生成目次页，并将目次页本身也被加入目次中。
%    \begin{macrocode}
\renewcommand*{\tableofcontents}{%
    \if@twocolumn
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    \nchapter{\contentsname}%
    \@mkboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}%
    \@starttoc{toc}%
    \if@restonecol\twocolumn\fi
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\listoftables}
% 修改\cs{listoftables}命令，使得附表清单被加入目次中。
%    \begin{macrocode}
\renewcommand*{\listoftables}{%
    \if@twocolumn
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    \nchapter{\listtablename}%
    \@mkboth{\MakeUppercase\listtablename}{\MakeUppercase\listtablename}%
    \@starttoc{lot}%
    \if@restonecol\twocolumn\fi
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\listoffigures}
% 修改\cs{listoffigures}命令，使得插图清单被加入目次中。
%    \begin{macrocode}
\renewcommand*{\listoffigures}{%
    \if@twocolumn
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    \nchapter{\listfigurename}%
    \@mkboth{\MakeUppercase\listfigurename}{\MakeUppercase\listfigurename}%
    \@starttoc{lof}%
    \if@restonecol\twocolumn\fi
}
%    \end{macrocode}
% \end{macro}
%
% \subsection{参考文献}
%
% \begin{environment}{thebibliography}
% 修改|thebibliography|环境用于在目次中加入参考文献页。
%    \begin{macrocode}
\renewenvironment{thebibliography}[1]
     {\nchapter{\bibname}%
      \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}%
      \list{\@biblabel{\@arabic\c@enumiv}}%
           {\settowidth\labelwidth{\@biblabel{#1}}%
            \leftmargin\labelwidth
            \advance\leftmargin\labelsep
            \@openbib@code
            \usecounter{enumiv}%
            \let\p@enumiv\@empty
            \renewcommand\theenumiv{\@arabic\c@enumiv}}%
      \sloppy
      \clubpenalty4000
      \@clubpenalty \clubpenalty
      \widowpenalty4000%
      \sfcode`\.\@m}
     {\def\@noitemerr
       {\@latex@warning{Empty `thebibliography' environment}}%
      \endlist}
%    \end{macrocode}
% \end{environment}
%
% 使用|gbt7714-2005.bst|作为参考文献样式。
%    \begin{macrocode}
\bibliographystyle{gbt7714-2005}
%    \end{macrocode}
%
% 使用符合\std{GB/T 7714-2005}规范的参考文献引用样式。
%    \begin{macrocode}
\setcitestyle{super,square}
%    \end{macrocode}
%
% 修改|natbib|内部的\cs{NAT@citesuper}命令，使其生成的上标引用编号可以正确地把
% \cs{cite}命令的可选参数（通常是引文页码）也作为上标放在引文编号方框之后。
%    \begin{macrocode}
\renewcommand\NAT@citesuper[3]{%
\ifNAT@swa%
  \if*#2*\else#2\NAT@spacechar\fi%
  \unskip\kern\p@\textsuperscript{\NAT@@open#1\NAT@@close#3}%
\else #1\fi\endgroup%
}
%    \end{macrocode}
%
% 重新定义\cs{ref}命令，使其前面自动加一个``\textasciitilde''。因为|hyperref|宏包会通
% 过\cs{AtBeginDocument}修改\cs{ref}的定义，因此我们对\cs{ref}的修改也必须使用
% \cs{AtBeginDocument}命令进行。同时我们需要修改\cs{eqref}，使其括号前后不出现空隙。
%    \begin{macrocode}
\AtBeginDocument{%
\let\oldref\ref%
\renewcommand*{\ref}[1]{\thinspace\oldref{#1}}%
\renewcommand*{\eqref}[1]{(\oldref{#1})}
}
%    \end{macrocode}
%
% \subsection{脚注}
%
% 使用|footmisc|宏包和|pifont|宏包设置符合\std{GB/T 7713.1-2006}规范的脚注样式。注意，
% 由于|pifont|宏包提供的特殊符号的限制，一页之中最多只能有$10$个脚注。
%    \begin{macrocode}
\DefineFNsymbols*{circlednumber}[text]{%
   {\ding{192}} %
   {\ding{193}} %
   {\ding{194}} %
   {\ding{195}} %
   {\ding{196}} %
   {\ding{197}} %
   {\ding{198}} %
   {\ding{199}} %
   {\ding{200}} %
   {\ding{201}} %
}%
\setfnsymbol{circlednumber}
%    \end{macrocode}
%
% \subsection{封面字段设置}
%
% 国家图书馆封面字段设置：
%    \begin{macrocode}
\newcommand*{\classification}[1]{%
  \renewcommand*{\njut@value@nlc@classification}{#1}}
\newcommand*{\securitylevel}[1]{%
  \renewcommand*{\njut@value@nlc@securitylevel}{#1}}
\newcommand*{\openlevel}{\njut@cap@nlc@openlevel}
\newcommand*{\controllevel}{\njut@cap@nlc@controllevel}
\newcommand*{\confidentiallevel}{\njut@cap@nlc@confidentiallevel}
\newcommand*{\clasifiedlevel}{\njut@cap@nlc@clasifiedlevel}
\newcommand*{\mostconfidentiallevel}{\njut@cap@nlc@mostconfidentiallevel}
\newcommand*{\udc}[1]{%
  \renewcommand*{\njut@value@nlc@udc}{#1}}
\newcommand*{\nlctitlea}[1]{%
  \renewcommand{\njut@value@nlc@titlea}{#1}}
\newcommand*{\nlctitleb}[1]{%
  \renewcommand{\njut@value@nlc@titleb}{#1}}
\newcommand*{\nlctitlec}[1]{%
  \renewcommand{\njut@value@nlc@titlec}{#1}}
\newcommand*{\supervisorinfo}[1]{%
  \renewcommand{\njut@value@nlc@supervisorinfo}{#1}}
\newcommand*{\chairman}[1]{%
  \renewcommand{\njut@value@nlc@chairman}{#1}}
\newcommand*{\reviewera}[1]{%
  \renewcommand{\njut@value@nlc@reviewera}{#1}}
\newcommand*{\reviewerb}[1]{%
  \renewcommand{\njut@value@nlc@reviewerb}{#1}}
\newcommand*{\reviewerc}[1]{%
  \renewcommand{\njut@value@nlc@reviewerc}{#1}}
\newcommand*{\reviewerd}[1]{%
  \renewcommand{\njut@value@nlc@reviewerd}{#1}}
\newcommand*{\nlcdate}[1]{%
  \renewcommand{\njut@value@nlc@date}{#1}}
%    \end{macrocode}
%
% 中文封面字段设置：
%    \begin{macrocode}
\renewcommand*{\title}[1]{%
  \renewcommand{\njut@value@title}{#1}}
\newcommand*{\titlea}[1]{%
  \renewcommand{\njut@value@titlea}{#1}}
\newcommand*{\titleb}[1]{%
  \renewcommand{\njut@value@titleb}{#1}}
\renewcommand*{\author}[1]{%
  \renewcommand{\njut@value@author}{#1}}
\newcommand*{\telphone}[1]{%
  \renewcommand{\njut@value@telphone}{#1}}
\newcommand*{\email}[1]{%
  \renewcommand{\njut@value@email}{#1}}
\newcommand*{\studentnum}[1]{%
  \renewcommand{\njut@value@studentnum}{#1}}
\newcommand*{\grade}[1]{%
  \renewcommand{\njut@value@grade}{#1}}
\newcommand*{\supervisor}[1]{%
  \renewcommand{\njut@value@supervisor}{#1}}
\newcommand*{\supervisortelphone}[1]{%
  \renewcommand{\njut@value@supervisortelphone}{#1}}
\newcommand*{\major}[1]{%
  \renewcommand{\njut@value@major}{#1}}
\newcommand*{\researchfield}[1]{%
  \renewcommand{\njut@value@researchfield}{#1}}
\newcommand*{\department}[1]{%
  \renewcommand{\njut@value@department}{#1}}
\newcommand*{\institute}[1]{%
  \renewcommand{\njut@value@institute}{#1}}
\newcommand*{\submitdate}[1]{%
  \renewcommand{\njut@value@submitdate}{#1}}
\newcommand*{\defenddate}[1]{%
  \renewcommand{\njut@value@defenddate}{#1}}
\renewcommand*{\date}[1]{%
  \renewcommand{\njut@value@date}{#1}}
%    \end{macrocode}
%
% 英文封面字段设置：
%    \begin{macrocode}
\newcommand*{\englishtitle}[1]{%
  \renewcommand{\njut@value@en@title}{#1}}
\newcommand*{\englishauthor}[1]{%
  \renewcommand{\njut@value@en@author}{#1}}
\newcommand{\englishsupervisor}[1]{%
  \renewcommand{\njut@value@en@supervisor}{#1}}
\newcommand{\englishmajor}[1]{%
  \renewcommand{\njut@value@en@major}{#1}}
\newcommand{\englishdepartment}[1]{%
  \renewcommand{\njut@value@en@department}{#1}}
\newcommand{\englishinstitute}[1]{%
  \renewcommand{\njut@value@en@institute}{#1}}
\newcommand*{\englishdate}[1]{%
  \renewcommand{\njut@value@en@date}{#1}}
%    \end{macrocode}
%
% \subsection{生成封面}
%
% \begin{macro}{\njutunderline}
% 定义封面中用到的生成下划线的宏。
%    \begin{macrocode}
\newcommand{\njut@underline}[2][\textwidth]%
           {\CJKunderline{\makebox[#1]{#2}}}
\def\njutunderline{\@ifnextchar[\njut@underline\CJKunderline}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\makenlctitle}
% 定义生成国家图书馆封面的命令。注意我们使用了前面修改过的\cs{cleardoublepage}命令来插入
% 无页眉页脚的空白页。
%    \begin{macrocode}
\newcommand*{\makenlctitle}{%
  \thispagestyle{empty}
  \pdfbookmark[0]{\njut@cap@nlc}{nlc}
  {\songti\zihao{-4}
    \makebox[40pt][l]{\njut@cap@nlc@classification}
    \njutunderline[150pt]{\njut@value@nlc@classification}
    \hfill
    \makebox[40pt][r]{\njut@cap@nlc@securitylevel}
    \njutunderline[150pt]{\njut@value@nlc@securitylevel}
    \vskip 10pt
    \makebox[40pt][l]{\njut@cap@nlc@udc}
    \njutunderline[150pt]{\njut@value@nlc@udc}
  }
  \vskip\stretch{2}
  \begin{center}
    \def\ULthickness{1pt}
    {\kaishu\zihao{-0} \njut@cap@nlc@title}
    {\kaishu\zihao{1}
    \vskip \stretch{1}
    \njutunderline[12em]{\njut@value@nlc@titlea}\\
    \njutunderline[12em]{\njut@value@nlc@titleb}\\
    \njutunderline[12em]{\njut@value@nlc@titlec}\\
    }
    \vskip \stretch{1}
    {\kaishu\zihao{4}\njut@cap@nlc@quotetitle}
    \vskip \stretch{1}
    {\kaishu\zihao{1}\njutunderline{\njut@value@author}}
    \vskip \stretch{1}
    {\kaishu\zihao{4}\njut@cap@nlc@author}
  \end{center}
  \vskip\stretch{1}
  {\kaishu\zihao{4}
    \noindent\njut@cap@nlc@supervisor%
    \njutunderline[94pt]{\njut@value@supervisor}\par
    \noindent\njutunderline[\textwidth]{%
      \njut@value@nlc@supervisorinfo}\par
    \noindent\njut@cap@nlc@degree%
    \njutunderline[8em]{\njut@value@degree}%
    \noindent\njut@cap@nlc@major%
    \njutunderline[164pt]{\njut@value@major}\par
    \noindent\njut@cap@nlc@submitdate%
    \njutunderline[8em]{\njut@value@submitdate}%
    \njut@cap@nlc@defenddate%
    \njutunderline[134pt]{\njut@value@defenddate}\par
    \noindent\njut@cap@nlc@institute\njutunderline[290pt]{}\par
    \noindent\hfill\njut@cap@nlc@chairman%
    \njutunderline[9em]{\njut@value@nlc@chairman}\par
    \noindent\hfill\njut@cap@nlc@reviwer%
    \njutunderline[9em]{\njut@value@nlc@reviewera}\par
    \noindent\hfill\njutunderline[9em]{\njut@value@nlc@reviewerb}\par
    \noindent\hfill\njutunderline[9em]{\njut@value@nlc@reviewerc}\par
    \noindent\hfill\njutunderline[9em]{\njut@value@nlc@reviewerd}\par
  }
  \cleardoublepage
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\maketitle}
% 重新定义{\LaTeX}提供的\cs{maketitle}命令，使其生成南京大学学术论文所需的中文封面。
% 注意我们使用了前面修改过的\cs{cleardoublepage}命令来插入无页眉页脚的空白页。
%    \begin{macrocode}
\newcommand*{\njut@covertable@onelinetitle}{
  \begin{tabular}{p{7.3em}c}
      \makebox[7em][s]{\njut@cap@cover@title}
      & \njutunderline[310pt]{\njut@value@title}\\
      \makebox[7em][s]{\njut@cap@cover@author}
      & \njutunderline[310pt]{\njut@value@author}\\
      \makebox[7em][s]{\njut@cap@cover@major}
      & \njutunderline[310pt]{\njut@value@major}\\
      \makebox[7em][s]{\njut@cap@cover@researchfield}
      & \njutunderline[310pt]{\njut@value@researchfield}\\
      \makebox[7em][s]{\njut@cap@cover@supervisor}
      & \njutunderline[310pt]{\njut@value@supervisor}\\
  \end{tabular}
}
\newcommand*{\njut@covertable@twolinetitle}{
  \begin{tabular}{p{7.3em}c}
      \makebox[7em][s]{\njut@cap@cover@title}
      & \njutunderline[310pt]{\njut@value@titlea}\\
      \makebox[7em][s]{}
      & \njutunderline[310pt]{\njut@value@titleb}\\
      \makebox[7em][s]{\njut@cap@cover@author}
      & \njutunderline[310pt]{\njut@value@author}\\
      \makebox[7em][s]{\njut@cap@cover@major}
      & \njutunderline[310pt]{\njut@value@major}\\
      \makebox[7em][s]{\njut@cap@cover@researchfield}
      & \njutunderline[310pt]{\njut@value@researchfield}\\
      \makebox[7em][s]{\njut@cap@cover@supervisor}
      & \njutunderline[310pt]{\njut@value@supervisor}\\
  \end{tabular}
}
\renewcommand*{\maketitle}{%
  \thispagestyle{empty}
  \pdfbookmark[0]{\njut@cap@cover}{cover}
  \begin{center}
    \vskip 10mm
    \includegraphics[width=1.96cm]{\njut@cap@institute@logo} \\
    \includegraphics[height=2cm]{\njut@cap@institute@name} \\
    \vskip 8mm
    {\bf\kaishu\zihao{1}\makebox[10em][s]{\njut@cap@cover@thesis}}\\
    \vskip 5mm
    {\bf\kaishu\zihao{1}（\makebox[7em][s]{\njut@cap@cover@apply}）}\\
    \vskip\stretch{1}
    {\bgroup
    \bf\kaishu\zihao{3}
    \def\tabcolsep{1pt}
    \def\arraystretch{1.5}
    \ifdefempty{\njut@cap@cover@title}{\njut@covertable@onelinetitle}{\njut@covertable@twolinetitle}
    \egroup}\\
    \vskip \stretch{1}
    {\bf\kaishu\zihao{4}\njut@value@date}
  \end{center}
  \ifnjut@backinfo
    \clearpage
    \thispagestyle{empty}
    \vspace*{\stretch{1}}
    {\bf\kaishu\zihao{-3}
    \noindent
    \begin{tabular}{p{6.2em}l}
    \makebox[6em][s]{\njut@cap@coverback@studentnum}： &\njut@value@studentnum\\
    \makebox[6em][s]{\njut@cap@coverback@defenddate}： &\njut@value@defenddate\\
    \makebox[6em][s]{\njut@cap@coverback@supervisor}： &\njut@cap@coverback@sign\\
    \end{tabular}}
    \clearpage
  \else
    \cleardoublepage
  \fi
}
%    \end{macrocode}
%  \end{macro}
%
% \begin{macro}{\makeenglishtitle}
% 定义生成英文封面的命令。注意我们使用了前面修改过的\cs{cleardoublepage}命令来插入无页眉
% 页脚的空白页。
%    \begin{macrocode}
\newcommand*{\makeenglishtitle}{%
  \thispagestyle{empty}
  \begin{center}
    \vspace*{20pt}
    \bf\sffamily\zihao{2}\njut@value@en@title
    \vskip \stretch{1}
    \normalfont\rmfamily\zihao{4}\njut@cap@cover@en@by
    \vskip 3pt
    \bf\sffamily\zihao{4}\njut@value@en@author
    \vskip\stretch{1}
    \normalfont\rmfamily\zihao{4}\njut@cap@cover@en@supervisor
    \vskip 3pt
    \normalfont\sffamily\zihao{4}\njut@value@en@supervisor
    \vskip\stretch{1}
    \normalsize\rmfamily\njut@cap@cover@en@statement
    \vskip\stretch{2}
    \includegraphics[width=2.5cm]{\njut@cap@institute@logo} \\
    \vskip 3mm
    \normalfont\njut@value@en@department\\
    \njut@value@en@institute
    \vskip 30pt
    \normalfont\normalsize\njut@value@en@date
  \end{center}
  \normalfont
  \cleardoublepage
}
%    \end{macrocode}
% \end{macro}
%
% \subsection{摘要页}
%
% \begin{macro}{\abstracttitlea}
% 用于设置中文摘要页论文标题的第一行。
%    \begin{macrocode}
\newcommand*{\abstracttitlea}[1]{%
  \renewcommand{\njut@value@abstract@titlea}{#1}%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\abstracttitleb}
% 用于设置中文摘要页论文标题的第二行。
%    \begin{macrocode}
\newcommand*{\abstracttitleb}[1]{%
  \renewcommand{\njut@value@abstract@titleb}{#1}%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{environment}{abstract}
% 定义中文摘要环境。该环境自动生成南京大学中文摘要页。注意我们使用了前面修改过的
% \cs{cleardoublepage}命令来插入无页眉页脚的空白页。
%    \begin{macrocode}
\newenvironment{abstract}{%
  \thispagestyle{empty}
  \pdfbookmark[0]{\njut@cap@abstract}{abstract}
  \begin{center}
    {\bf\kaishu\zihao{-2}%
     \njutunderline{\njut@cap@abstract@chaptername}}
  \end{center}
  \vspace{3mm}
  {\kaishu\zihao{4}%
  \noindent\njut@cap@abstract@title{：}%
  \njutunderline[318pt]{\njut@value@abstract@titlea}\\
  \noindent\njutunderline[\textwidth]{\njut@value@abstract@titleb}\\
  \noindent\njutunderline[178pt]{\njut@value@major}%
  \njut@cap@abstract@major%
  \njutunderline[50pt]{\njut@value@grade}%
  \njut@cap@abstract@author{：}%
  \njutunderline[61pt]{\njut@value@author}\\
  \noindent\njut@cap@abstract@supervisor{：}%
  \njutunderline[248pt]{\njut@value@supervisor}\\
  }
  \vspace{5mm}
  \begin{center}
    {\heiti\zihao{-3}\njut@cap@abstract@abstractname}
  \end{center}%
  \normalsize\par%
}{%
  \cleardoublepage
}
%    \end{macrocode}
% \end{environment}
%
% \begin{macro}{\keywords}
% 定义生成中文摘要关键词的命令。此命令必须放在\env{abstract}环境内的末尾使用。中
% 文关键词之间应以中文全角分号隔开，末尾不需要加标点。
%    \begin{macrocode}
\newcommand{\keywords}[1]{%
  \renewcommand*{\njut@value@abstract@keywords}{#1}%
  \par\vspace{2ex}\noindent%
  {\bf\njut@cap@abstract@keywordsname{：}}~{#1}%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\englishabstracttitlea}
% 用于设置英文摘要页论文标题的第一行。
%    \begin{macrocode}
\newcommand*{\englishabstracttitlea}[1]{%
  \renewcommand{\njut@value@abstract@en@titlea}{#1}%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\englishabstracttitleb}
% 用于设置英文摘要页论文标题的第二行。
%    \begin{macrocode}
\newcommand*{\englishabstracttitleb}[1]{%
  \renewcommand{\njut@value@abstract@en@titleb}{#1}%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{environment}{englishabstract}
% 定义英文摘要环境。该环境自动生成南京大学英文摘要页。注意我们使用了前面修改过的
% \cs{cleardoublepage}命令来插入无页眉页脚的空白页。
%    \begin{macrocode}
\newenvironment{englishabstract}{%
  \thispagestyle{empty}
  \pdfbookmark[0]{\njut@cap@abstract@en}{englishabstract}
  \begin{center}
    {\bf\kaishu\zihao{-2}%
     \njutunderline{\njut@cap@abstract@en@chaptername}}
  \end{center}
  {\zihao{4}%
   \njut@cap@abstract@en@title{:}~%
   \njutunderline[360pt]{\njut@value@abstract@en@titlea}\\
   \njutunderline[\textwidth]{\njut@value@abstract@en@titleb}\\
   \njut@cap@abstract@en@major{:}~%
   \njutunderline[298pt]{\njut@value@en@major}\\
   \njut@cap@abstract@en@author{:}~%
   \njutunderline[299pt]{\njut@value@en@author}\\
   \njut@cap@abstract@en@supervisor{:}~%
   \njutunderline[348pt]{\njut@value@en@supervisor}\\
  }
  \vspace{5mm}
  \begin{center}
    {\bf\zihao{-3}\njut@cap@abstract@en@abstractname}
  \end{center}%
  \normalsize\par%
}{%
  \cleardoublepage
}
%    \end{macrocode}
% \end{environment}
%
% \begin{macro}{\englishkeywords}
% 定义生成中文摘要关键词的命令。此命令必须放在\env{englishabstract}环境内的末尾
% 使用。英文关键词之间应以英文半角逗号隔开，末尾不需要加标点。
%    \begin{macrocode}
\newcommand{\englishkeywords}[1]{%
  \renewcommand*{\njut@value@abstract@en@keywords}{#1}%
  \par\vspace{2ex}\noindent%
  {\bf\njut@cap@abstract@en@keywordsname{:}}~~{#1}%
}
%    \end{macrocode}
% \end{macro}
%
% \subsection{前言章节}
%
% \begin{environment}{preface}
% 该环境用于``前言''页。
%    \begin{macrocode}
\newenvironment{preface}{%
  \nchapter{\njut@cap@preface}
}{}
%    \end{macrocode}
% \end{environment}
%
% \subsection{致谢章节}
%
% \begin{environment}{acknowledgement}
% 该环境用于``致谢''页。
%    \begin{macrocode}
\newenvironment{acknowledgement}{%
  \nchapter{\njut@cap@acknowledgementname}
}{}
%    \end{macrocode}
% \end{environment}
%
% \subsection{简历与科研成果页}
%
% \begin{environment}{resume}
% 该环境用于生成作者简历与科研成果页。
%    \begin{macrocode}
\newenvironment{resume}{%
  \nchapter{\njut@cap@resume@chaptername}
}{}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{authorinfo}
% 定义作者基本信息环境。该环境自动生成作者基本信息段落。此环境必须被放在|resume|环境中。
%    \begin{macrocode}
\newenvironment{authorinfo}{%
  \paragraph*{\njut@cap@resume@authorinfo}
}{}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{education}
% 定义作者教育背景列表环境。此环境必须被放在|resume|环境中。
%    \begin{macrocode}
\newenvironment{education}{%
  \paragraph*{\njut@cap@resume@education}
  \begin{description}[labelindent=0em, leftmargin=8em, style=sameline]
}{%
  \end{description}
}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{publications}
% 定义作者攻读学位期间发表论文列表环境。此环境必须被放在|resume|环境中。
%    \begin{macrocode}
\newenvironment{publications}{%
  \paragraph*{\njut@cap@resume@publications}
  \begin{enumerate}[label=\arabic*., labelindent=0em, leftmargin=*]
}{%
  \end{enumerate}
}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{projects}
% 定义作者攻读学位期间参与的科研课题列表环境。此环境必须被放在|resume|环境中。
%    \begin{macrocode}
\newenvironment{projects}{%
  \paragraph*{\njut@cap@resume@projects}
  \begin{enumerate}[label=\arabic*., labelindent=0em, leftmargin=*]
}{%
  \end{enumerate}
}
%    \end{macrocode}
% \end{environment}
%
% \subsection{学位论文出版授权书}
%
% \begin{macro}{\njut@cap@datefield}
% 该命令生成一个由用户填写的日期域。
%    \begin{macrocode}
\newcommand*{\njut@cap@datefield}{%
\njutunderline[1cm]{}{\njut@cap@year}%
\njutunderline[1cm]{}{\njut@cap@month}%
\njutunderline[1cm]{}{\njut@cap@day}
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\njut@license@makedeclaration}
% 该命令生成《学位论文出版授权书》中的授权声明。
%    \begin{macrocode}
\newcommand*{\njut@license@makedeclaration}{%
\par\njut@cap@license@declaration
\vspace{5mm}
\begin{flushright}
  \njut@cap@license@sign\njutunderline[6cm]{}\\
  \njut@cap@datefield\\
\end{flushright}%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\njut@license@maketable}
% 该命令生成《学位论文出版授权书》中的论文信息表格。
%    \begin{macrocode}
\newcommand*{\njut@license@maketable}{%
\noindent\zihao{5}%
\begin{tabular*}{\textwidth}
    {|C{2.2cm}|C{2cm}|C{1.5cm}|C{2.1cm}|C{1.42cm}C{1.5cm}|C{1.25cm}|}
  \hline
  \cell{2.2cm}{1cm}{\njut@cap@license@title}
  & \multicolumn{6}{c|}{\njut@value@title} \\
  \hline
  \cell{2.2cm}{1cm}{\njut@cap@license@studentnum}
  & {\njut@value@studentnum}
  & {\njut@cap@license@department}
  & \multicolumn{2}{c|}{%
    \cell{3.52cm}{1cm}{\njut@value@department}%
  }
  & {\njut@cap@license@grade}
  & {\njut@value@grade} \\
  \hline
  \cell{2.2cm}{1.5cm}{\njut@cap@license@category}
  & \multicolumn{3}{c}{
    \begin{tabular*}{5.6cm}{p{2.8cm}p{2.8cm}}
       \ifnjut@master%
           {{\zihao{-4}$\CheckedBox$}}%
       \else%
           {{\zihao{4}$\Square$}}%
       \fi%
       \njut@cap@license@categorymaster
      & {\zihao{4}$\Square$}%
       \njut@cap@license@categorymasterspec \\
       \ifnjut@phd%
           {{\zihao{-4}$\CheckedBox$}}%
       \else%
           {{\zihao{4}$\Square$}}%
       \fi%
       \njut@cap@license@categoryphd
      & {\zihao{4}$\Square$}%
       \njut@cap@license@categoryphdspec \\
    \end{tabular*}}
  & \multicolumn{3}{c|}{%
    \raisebox{-1em}{\njut@cap@license@categoryhint}}\\
  \hline
  \cell{2.2cm}{1cm}{\njut@cap@license@telphone}
  & \multicolumn{2}{c|}{{\njut@value@telphone}}
  & {\njut@cap@license@email}
  & \multicolumn{3}{c|}{{\njut@value@email}}  \\
  \hline
  \cell{2.2cm}{1cm}{\njut@cap@license@supervisorname}
  & \multicolumn{2}{c|}{{\njut@value@supervisor}}
  & {\njut@cap@license@supervisortelphone}
  & \multicolumn{3}{c|}{{\njut@value@supervisortelphone}} \\
  \hline
\end{tabular*}
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\makelicense}
% 该命令用于生成《学位论文出版授权书》。该授权书中的一些字段将根据用户所设置的文
% 档属性自动填写。
%    \begin{macrocode}
\newcommand*{\makelicense}{%
  \thispagestyle{empty}
  \nchapter{\njut@cap@license@chaptername}
  \njut@license@makedeclaration
  \par\vspace{1em}
  \njut@license@maketable
  \par\vspace{1em}
  \noindent\njut@cap@license@securitylevel\par
  \noindent\ifthenelse{\equal{\njut@value@nlc@securitylevel}
                             {\njut@cap@nlc@openlevel}}
                      {{\zihao{-4}$\CheckedBox$}}
                      {{\zihao{4}$\Square$}}%
  {\njut@cap@license@public}\par
  \noindent\ifthenelse{\equal{\njut@value@nlc@securitylevel}
                             {\njut@cap@nlc@openlevel}}
                      {{\zihao{4}$\Square$}}
                      {{\zihao{-4}$\CheckedBox$}}%
  {\njut@cap@license@secret}%
  \njut@cap@datefield\hspace{0.5em}%
  \njut@cap@to\hspace{0.5em}%
  \njut@cap@datefield\par
  \vspace{1em}
  \noindent\njut@cap@license@remark%
  \normalfont
  \cleardoublepage
}
%    \end{macrocode}
% \end{macro}
%
% \subsection{其他自定义命令和环境}
%
% \begin{macro}{\njuthesis}
% 定义{\njuthesis}文档类的logo。
%    \begin{macrocode}
\newcommand{\njuthesis}{\texttt{NJU-Thesis}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\zhdash}
% 定义中文破折号。
%    \begin{macrocode}
\newcommand{\zhdash}{\kern0.3ex\rule[0.8ex]{2em}{0.1ex}\kern0.3ex}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\cell}
% \cs{cell}\marg{width}\marg{height}\marg{text}用于定义一个宽度为\meta{width}，
% 高度为\meta{height}，内容为\meta{text}的的单元格。该单元格可放在表格中，用于控
% 制表格单元格的大小。
%    \begin{macrocode}
\newcommand{\cell}[3]{\parbox[c][#2][c]{#1}{\makebox[#1]{#3}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{C}
% 定义一个新的表格列模式，|C{width}|，表示将内容居中，且列宽度为|width|。
%
% |array|环境中的\cs{centering}命令会改变\cs{newline}的定义，因此我们需要用
% \cs{arraybackslash}将其恢复；另外，我们也可能会在列内容中使用\cs{newline}，因此在
% \cs{centering}后重新定义了\cs{newline}。
%
%    \begin{macrocode}
\newcolumntype{C}[1]{>{\centering\let\newline\\%
    \arraybackslash\hspace{0pt}}p{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{environment}{arabicenum}
% 阿拉伯数字列表环境。该列表最多三层。
%    \begin{macrocode}
\newlist{arabicenum}{enumerate}{3}
\setlist[arabicenum,1]{label=\textnormal%
  {\textnormal{(\arabic*)}}}
\setlist[arabicenum,2]{label=\textnormal%
  {\textnormal{(\arabic{arabicenumi}.\arabic*)}}}
\setlist[arabicenum,3]{label=\textnormal%
  {\textnormal{(\arabic{arabicenumi}.\arabic{arabicenumii}.\arabic*)}}}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{romanenum}
% 罗马数字列表环境。该列表最多两层。
%    \begin{macrocode}
\newlist{romanenum}{enumerate}{2}
\setlist[romanenum,1]{label={\textnormal{\roman*.}}}
\setlist[romanenum,2]{label={\textnormal{\alph*\,)}}}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{alphaenum}
% 小写字母列表环境。该列表最多两层。
%    \begin{macrocode}
\newlist{alphaenum}{enumerate}{2}
\setlist[alphaenum,1]{label={\textnormal{\alph*\,)}}}
\setlist[alphaenum,2]{label={\textnormal{\alph{alphaenumi}.\arabic*\,)}}}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{caseenum}
% 情况分类列表环境。该列表最多两层。
%    \begin{macrocode}
\newlist{caseenum}{enumerate}{2}
\setlist[caseenum,1]{label={\textnormal{\njut@cap@case\arabic*.}}}
\setlist[caseenum,2]{label={\textnormal{\njut@cap@subcase\arabic{caseenumi}.\arabic*.}}}
\setlist[caseenum]{leftmargin=*}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{stepenum}
% 步骤列表环境。该列表最多两层。
%    \begin{macrocode}
\newlist{stepenum}{enumerate}{2}
\setlist[stepenum,1]{label={\textnormal{\njut@cap@step\arabic*.}}}
\setlist[stepenum,2]{label={\textnormal{\njut@cap@substep\arabic{stepenumi}.\arabic*.}}}
\setlist[stepenum]{leftmargin=*}
%    \end{macrocode}
% \end{environment}
%
% \subsection{设置PDF文档属性}
%
% \begin{macro}{\njut@setpdfinfo}
% 此命令设置PDF文档属性，依赖于|hyperref|宏包。
%    \begin{macrocode}
\newcommand*{\njut@setpdfinfo}{\hypersetup{%
        pdftitle={\njut@value@title},
        pdfauthor={\njut@value@author},
        pdfsubject={\njut@cap@cover@apply},
        pdfkeywords={\njut@value@abstract@keywords},
        pdfcreator={\njut@value@author},
        pdfproducer={XeLaTeX with the NJU-Thesis document class}}
}
%    \end{macrocode}
% \end{macro}
%
% 在文档的\cs{begin{document}}之后立即调用\cs{njut@setpdfinfo}命令设置PDF文档属性。
%    \begin{macrocode}
\AtBeginDocument{\njut@setpdfinfo}
%</cls>
%    \end{macrocode}
% \StopEventually{\PrintIndex}
% \Finale
%
% \iffalse
%    \begin{macrocode}
%<*dtx-style>
\ProvidesPackage{dtx-style}
\RequirePackage{amssymb}
\RequirePackage{calc}
\RequirePackage{array,longtable}
\RequirePackage{fancybox,fancyvrb}
\RequirePackage{xcolor}
\RequirePackage{txfonts}
\RequirePackage{xltxtra}
\RequirePackage{subfigure}
\RequirePackage{marvosym}
\RequirePackage{booktabs}
\RequirePackage{paralist}
\RequirePackage{enumitem}
\RequirePackage{titlesec}
\RequirePackage{titling}
\RequirePackage{fancyhdr}
\RequirePackage{geometry}
\RequirePackage{indentfirst}
\RequirePackage[CJKnumber,CJKchecksingle]{xeCJK}
\RequirePackage[hyphens]{url} % must be load before hypdoc package
\RequirePackage{hypdoc} % it will load hyperref package
\RequirePackage[normalem]{ulem}
\hypersetup{%
    unicode=false,
    hyperfootnotes=true,
    hyperindex=true,
    pageanchor=true,
    CJKbookmarks=true,
    bookmarksnumbered=true,
    bookmarksopen=true,
    bookmarksopenlevel=0,
    breaklinks=true,
    colorlinks=false,
    plainpages=false,
    pdfpagelabels,
    pdfborder=0 0 0%
}

\newcommand{\env}[1]{\texttt{#1}}

% 设置超链接为蓝色
\hypersetup{colorlinks=true,urlcolor=blue}

% 定义英文字体名称。
\newcommand*{\njut@enfn@main}{Times New Roman}
\newcommand*{\njut@enfn@sans}{Arial}
\newcommand*{\njut@enfn@mono}{Courier New}

% 选择中文字体
\newcommand*{\njut@zhfn@songti}{Adobe Song Std}
\newcommand*{\njut@zhfn@heiti}{Adobe Heiti Std}
\newcommand*{\njut@zhfn@kaishu}{Adobe Kaiti Std}
\newcommand*{\njut@zhfn@fangsong}{Adobe Fangsong Std}

% 定义中文字体
\setCJKfamilyfont{song}{\njut@zhfn@songti}
\setCJKfamilyfont{hei}{\njut@zhfn@heiti}
\setCJKfamilyfont{kai}{\njut@zhfn@kaishu}
\setCJKfamilyfont{fangsong}{\njut@zhfn@fangsong}

\setCJKmainfont[BoldFont={\njut@zhfn@heiti},
                ItalicFont={\njut@zhfn@kaishu}]{\njut@zhfn@songti}
\setCJKsansfont{\njut@zhfn@heiti}
\setCJKmonofont{\njut@zhfn@fangsong}

% 定义文档使用的英文字体
\setmainfont{\njut@enfn@main}
\setsansfont{\njut@enfn@sans}
\setmonofont{\njut@enfn@mono}

% 定义中文字体选择命令
\newcommand*{\songti}{\CJKfamily{song}}
\newcommand*{\heiti}{\CJKfamily{hei}}
\newcommand*{\kaishu}{\CJKfamily{kai}}
\newcommand*{\fangsong}{\CJKfamily{fangsong}}

\renewcommand{\contentsname}{目\hspace{2em}录}
\renewcommand{\abstractname}{摘\hspace{2em}要}
\renewcommand{\indexname}{索\hspace{2em}引}
\renewcommand{\figurename}{图}
\renewcommand{\tablename}{表}
\renewcommand{\refname}{参考文献}

\setlength{\parskip}{4pt plus1pt minus0pt}
\setlength{\topsep}{0pt}
\setlength{\partopsep}{0pt}
\setlength{\parindent}{2em}
\addtolength{\oddsidemargin}{-1cm}
\advance\textwidth 1.5cm
\addtolength{\topmargin}{-1cm}
\addtolength{\headsep}{0.3cm}
\addtolength{\textheight}{2.3cm}

\newcommand{\zhdash}{\kern0.3ex\rule[0.8ex]{2em}{0.1ex}\kern0.3ex}

\renewcommand{\baselinestretch}{1.3}

\DefineVerbatimEnvironment{shell}{Verbatim}%
  {frame=single,framerule=0.1mm,rulecolor=\color{black},%
   framesep=2mm,fontsize=\small,gobble=1}

\DefineVerbatimEnvironment{example}{Verbatim}%
  {frame=single,framerule=0.1mm,rulecolor=\color{black},%
   framesep=2mm,baselinestretch=1.2,fontsize=\small,gobble=1}

\long\def\myentry#1{\vskip5pt\par\noindent\llap{{\color{blue}\fangsong #1}}%
  \marginpar{\strut}\hskip\parindent}

% 使用|titlesec|宏包提供的\titleformat命令设置标题格式：
\titleformat*{\section}{\Large\bfseries}
\titleformat*{\subsection}{\large\bfseries}
\titleformat*{\subsubsection}{\normalsize\bfseries}
\titleformat*{\paragraph}{\normalsize\bfseries}
\titleformat*{\subparagraph}{\normalsize\bfseries}

% 使用|titling|宏包设置标题的字体
\pretitle{\begin{center}\huge\bfseries}
\posttitle{\par\end{center}\vskip 1em}
\preauthor{\begin{center}
             \large \lineskip 0.5em}
\postauthor{\par\end{center}}
\predate{\begin{center}\large}
\postdate{\par\end{center}}

% 修改\cs{tableofcontents}命令用于生成目次页。
\renewcommand{\tableofcontents}{%
    \if@twocolumn
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    \section*{\hfill\contentsname\hfill}%
    \@mkboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}%
    \@starttoc{toc}%
    \if@restonecol\twocolumn\fi
}

% 增加一种新的表格列对齐方式 C{width}，表示该列内容居中且宽度为width
\newcolumntype{C}[1]{>{\centering\let\newline\\%
    \arraybackslash\hspace{0pt}}p{#1}}


% \dangericon 表示警告的图标
\font\manfnt=manfnt
\newcommand*{\dangericon}{\manfnt\char127}

% note 环境表示需特别注意的内容
\newenvironment{note}
               {\vskip1.5ex\par\noindent\llap{\dangericon\hskip2mm}\textbf{注意：}}
               {\vskip1.5ex}

% syntax 环境表示语法描述
\newenvironment{syntax}
               {\begin{center}}
               {\end{center}}

\newenvironment{suggestion}
               {\par\noindent\textbf{建议：}}{}

% 重新设置默认的列表的格式。
\setlist{%
  topsep=0.3em,             % 列表顶端的垂直空白
  partopsep=0pt,            % 列表环境前面紧接着一个空白行时其顶端的额外垂直空白
  itemsep=0ex plus 0.1ex,   % 列表项之间的额外垂直空白
  parsep=0pt,               % 列表项内的段落之间的垂直空白
  leftmargin=1.5em,           % 环境的左边界和列表之间的水平距离
  rightmargin=0em,          % 环境的右边界和列表之间的水平距离
  labelsep=0.5em,           % 包含标签的盒子与列表项的第一行文本之间的间隔
  labelwidth=2em,           % 包含标签的盒子的正常宽度；若实际宽度更宽，则使用实际宽度。
}

% 设置无序列表的标签符号。
\setlist[itemize,1]{label=$\bullet$}
\setlist[itemize,2]{label=$\blacksquare$}
\setlist[itemize,3]{label=$\Diamondblack$}

% 默认的|fancy|风格会在每一章最后的空白页（由于是双面打印）也加上页眉页脚，但我
% 们通常不希望如此。解决方法是修改{\LaTeX}内部的\cleardoublepage命令的定义如下：
\makeatletter
\def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
  \hbox{}\thispagestyle{empty}\newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi}
\makeatother

% 文章用A4纸标准大小的白纸打印，页眉：2.6cm，页脚：2.4cm，页边距上下：3.5cm，左
% 右：3.2cm。
\geometry{headheight=2.6cm,headsep=3mm,footskip=13mm}
\geometry{top=3.5cm,bottom=3.5cm,left=3.2cm,right=3.2cm}


% \std{code}表示国家标准编号
\newcommand*{\std}[1]{{\normalfont #1}}

% 增加环境命令： \env{name} 表示名为 name 的环境
%% \newcommand{\env}[1]{\texttt{#1}}

% 修改\tableofcontents命令用于生成目次页，将目次页本身也被加入目次中。
\makeatletter
\renewcommand*{\tableofcontents}{%
    \if@twocolumn
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    \section*{\hfill\contentsname\hfill}%
    \@mkboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}%
    \addcontentsline{toc}{section}{\contentsname}%
    \@starttoc{toc}%
    \if@restonecol\twocolumn\fi
}
\makeatother

% 设置索引页面的样式
\IndexPrologue{\clearpage\section*{\hfill\indexname\hfill}%
\markboth{\indexname}{\indexname}%
\addcontentsline{toc}{section}{\indexname}%
斜体数字表示对应项的描述所在页面的页码， %
带下划线的数字表示对应项的定义所在的代码行号，%
其他数字表示对应项所被引用的代码行号。%
}

% 设置索引页面的栏数
\setcounter{IndexColumns}{2}


\newcommand{\dashnumber}[2]%
  {{#1}\kern.07em\rule[.5ex]{.4em}{.1ex}\kern.07em{#2}}

%</dtx-style>
%    \end{macrocode}
% \fi
\endinput
